Конвертировать IntPtr в int * в C #? - PullRequest
2 голосов
/ 06 мая 2009

У меня есть 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.

Как я могу получить ненулевое значение int*?

Спасибо! Alan

1 Ответ

4 голосов
/ 06 мая 2009

Ваше объявление cppFunction должно быть примерно таким:

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

Это должно решить вашу проблему.

Вы можете также найти это полезным: http://www.pcreview.co.uk/forums/thread-2902012.php

...