3

我有一个 C++ DLL 返回int*一个 C# 程序。问题是分配后int*仍然存在 C# 中的问题。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.

我怎样才能得到一个非 null int*

谢谢!艾伦

4

1 回答 1

4

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

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

那应该可以解决您的问题。

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

于 2009-05-06T17:51:15.860 回答