在C#中调用C ++方法

时间:2015-02-03 06:54:10

标签: c# c++ pinvoke

我需要从c#调用c ++函数。

c ++函数是

BOOL Usb_GetDevicesList(int &iNbDevices, char aszDeviceName[][128]);

我试过

  [DllImport("UsbComm.dll", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Usb_GetDevicesList(int iNbDevices, out byte[][] aszDeviceName);

我收到了错误

  

无法编组'参数#2':没有编组支持   嵌套数组。

请帮我将这个c ++函数转换为C#。

1 个答案:

答案 0 :(得分:1)

您可以将2D数组展平为单维数组,然后传递它。

 flattened_array[(y * width) + x] = source[x][y];

请参阅this answer