2015-08-06 2 views
0

Как преобразовать IntPtr в массив. На самом деле я вызвал функцию из неуправляемой dll. Он возвращает IntPtr. Теперь мне нужно преобразовать его в массив. Пожалуйста, пусть кто-нибудь придумает. Ниже приведен фрагмент кода.Как преобразовать IntPtr в массив?

Unmanaged function declared 

[DllImport("NLib.dll", CallingConvention = CallingConvention.Cdecl)] 
public static extern unsafe IntPtr N_AllocPt1dArray(NL_INDEX n, ref stacks S); 

Вызов функции

void Function1() 
{ 
    IntPtr PPtr=N_AllocPt1dArray(n, ref S); 
} 

Теперь мне нужно, чтобы преобразовать PPtr в массив (массив demo[]) .где демо определяется

public unsafe struct demo 
{    
    public int x ; 
    public int y ; 
    public int z ; 
}demo DEMO; 
+1

Возможный дубликат [Получение массива структуры из IntPtr] (http://stackoverflow.com/questions/6747112/getting-array-of-struct-from-intptr) – tafa

ответ

0

Попробуйте это:

array[0] = (demo)System.Runtime.InteropServices.Marshal.PtrToStructure(PPtr , typeof(demo)); 

ОБНОВЛЕНИЕ:

Решение 2 из thispage - это то, что вам нужно.

+0

Спасибо за ответ. Но теперь я получил структуру массива .Как преобразовать его в массив demo [] array. –

+0

Обратитесь к ссылке, приведенной в моем ответе. – mitli

Смежные вопросы