与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 );