我有一个DLL,我无法改变但是用C ++编写。它在我的托管C#DLL中调用一个函数(我可以自由更改)。有很多参数需要通过,但有些工作,有些不要。
传递“unsigned char *”没有问题,但是传递“unsigned int * ”或“int ”时出现问题。
当C ++ DLL发送一个int *时,我尝试使用“uint *”在我的C#DLL中捕获它。我收到编译错误,说不能将参数从“int *”转换为“long *”。
我尝试了各种各样的UInt16,ushort等,但我总是遇到类似的错误。
如何将此指针数组编组到我的程序中?
答案 0 :(得分:1)
答案 1 :(得分:0)
我同意Davide的IntPtr。您需要将参数读取为IntPtr。在Interop完成后,您可以执行MyIntPtr.ToInt32()或您可能想要的任何转换。