我有一个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*
?
谢谢! 艾伦
答案 0 :(得分:4)
你的cppFunction声明应该是这样的:
void cppFunction(ref int* ptr) {
ptr = somevalue;
}
这应该可以解决你的问题。
您可能会发现这也很有用: http://www.pcreview.co.uk/forums/thread-2902012.php