与dllimport的多个参数的不同的charset

是否可以为单独的参数声明不同的charset选项?

inheritance人的意思是:

[dllimport("my.dll", charset = charset.Ansi)] void myfunc(string CharPtrInCPP, StringBuilder WCharPtrInCPP); 

问题是c ++函数为文件名采用char *,为收到的数据采用wchar * …

在c ++中:

 void myfuncImpl(char *filename, WCHAR *buffer, int len); //another method, myfunc, wraps this 

如前所述,您应该能够为每个参数指定MarshalAs。 另一种方法是指定默认字符集类型,然后指定奇数输出的编组。 例如,

  [DllImport("my.dll", CharSet=CharSet.Unicode)] void myfunc( [MarshalAs( UnmanagedType.LPStr )] String filename, StringBuilder buffer, int len ); 

您应该为每个参数指定[MarshalAs]

请尝试以下方法:

 [DllImport("my.dll")] void myfunc( [MarshalAs(UnmanagedType.LPStr)] string CharPtrInCPP, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder WCharPtrInCPP, int len );