我也说不清是数组指针还是指针数组……
我用c#写了一个程序,需要调用c++写的dll文件,文件中的其他函数都已经可以正常使用了,就剩下一个函数一直用不成功。
C++中的函数:
Read(int h, PUSHORT pBuf, int n);
使用(可以正常使用,h和n在前面定义了)
PUSHORT Buffer = NULL;
Buffer = new USHORT[n];(不知道这里是什么意思,为什么定义了2个相同的)
Read(h, Buffer, n);
C# 中(dllimport我就不贴上了)
unsafe public static extern bool Read(int h, int* []Buffer, int n);
函数的buffer里不管我是定义了int* []还是int []还是用指针IntPtr都失败
int[] Buffer = new int[n];(失败)
int* []Buffer = new int*[200];(失败)
最后指针(失败)
int size = Marshal.SizeOf(Buffer);(会报错,我知道会这样,可是这里应该怎么做?)
IntPtr ptrbu = Marshal.AllocHGlobal(size);
Marshal.Copy(Buffer, 0, ptrbu, n);
Console.WriteLine(Read(h, Buffer, n));
除了使用指针在size的时候会报错,其他方法都能正常编译通过,但是最后consolo的时候都是false!
我知道是buffer的问题,这个指针数组(还是数组指针)到底该怎么弄啊?
在定义Buffer的时候,后面括号里的失败不是指定义的时候失败,而是最后consolo里是false。
函数的用途是读取数据,存到buffer里面。
谢谢,不过依旧是失败。我也没有原函数,只能一味的去试。
本回答被网友采纳