在C#中将IntPtr转换为int *?

时间:2009-05-06 17:47:18

标签: c# pointers intptr managed-code

我有一个C ++ DLL将int*返回给C#程序。问题是在分配后C#中的int*仍为null

当我将C ++结果分配给IntPtr时,我得到一个正确的非空值。但是,将此转换为int*的任何尝试都会产生null

我试过了:

IntPtr intp = cppFunction ();           // Non-null.

int* pi = (int *) intp;                 // Results in null.

int* pi = (int *) intp.ToPointer ();    // Results in null.


void* vp = intp.ToPointer ();

int* pi = (int *) vp;                   // Results in null, but vp is non-null.

如何获得非空int*

谢谢! 艾伦

1 个答案:

答案 0 :(得分:4)

你的cppFunction声明应该是这样的:

void cppFunction(ref int* ptr) {
   ptr = somevalue;
}

这应该可以解决你的问题。

您可能会发现这也很有用: http://www.pcreview.co.uk/forums/thread-2902012.php