我有一个带有导出的C DLL,如下所示:
__declspec(dllexport) int Function(
char *password,
unsigned char *ssid,
int ssidlength,
unsigned char *output)
{
在C#方面,我使用如下:
[DllImport("myDLL.dll", SetLastError = true)]
protected static extern int Function(
[MarshalAs(UnmanagedType.LPStr)]
string password,
[MarshalAs(UnmanagedType.LPStr)]
string ssid,
int ssidlength,
[MarshalAs(UnmanagedType.LPArray)]
byte[] output);
以上实际上工作得很好,但我需要花一些时间来弄清楚我需要编组什么东西。是否有任何指南列出所有可能的c / cpp数据类型及其等效的C#编组?
类似的东西:
c => C#
Char * myVar => [MarshalAs(UnmanagedType.LPStr)] string myVar
...
但列出所有类型?
我问的原因,是因为我从来不知道何时使用“ref”或out或IntPtr,或者用什么类型来编组。
最后,在上面的代码中,我将一个指向unsigned char数组的指针编组为一个指向字符串的长指针。这似乎不对,但它确实有效。最终以byte []数组结束更有意义,但我无法让它工作。如果只有在线参考,我可以使用......
答案 0 :(得分:1)
答案 1 :(得分:0)