将非托管传递给托管int指针

时间:2011-02-14 21:20:37

标签: c# interop

我有一个DLL,我无法改变但是用C ++编写。它在我的托管C#DLL中调用一个函数(我可以自由更改)。有很多参数需要通过,但有些工作,有些不要。

传递“unsigned char *”没有问题,但是传递“unsigned int * ”或“int ”时出现问题。

当C ++ DLL发送一个int *时,我尝试使用“uint *”在我的C#DLL中捕获它。我收到编译错误,说不能将参数从“int *”转换为“long *”。

我尝试了各种各样的UInt16,ushort等,但我总是遇到类似的错误。

如何将此指针数组编组到我的程序中?

2 个答案:

答案 0 :(得分:1)

你尝试使用IntPtr吗?我相信它可以用于Handles,也可以用于整数指针。

答案 1 :(得分:0)

我同意Davide的IntPtr。您需要将参数读取为IntPtr。在Interop完成后,您可以执行MyIntPtr.ToInt32()或您可能想要的任何转换。

相关问题