我正在尝试使用C#中的一个函数来自一个无人的C dll。我是C#的新手,不确定我是否正确地做到了这一点。 C中的函数看起来像这样:
unsigned short Function(unsigned short, unsigned long, unsigned long, unsigned short*);
[DllImport("cDLLfile.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern short Function(ushort a, UInt32 b, UInt32 c, IntPtr buffer);
缓冲区是一个类似
的数组ushort[] = new ushort[7];
我填充数组然后尝试将其传递给Function并收到错误。我知道IntPtr不对。这样做的正确方法是什么?
答案 0 :(得分:2)
它应该与ushort []
一起使用[DllImport("cDLLfile.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true) ]
private static extern short Function(ushort a, UInt32 b, UInt32 c, ushort[] buffer);
答案 1 :(得分:0)
试试这个:
extern short Function(ushort a, UInt32 b, UInt32 c, ushort[] buffer)
答案 2 :(得分:0)
Here您将找到有关如何编组数组的详细信息和示例代码。