Как маршал Int массивы или указатели на массивы Int
(Я понимаю, что это может быть дубликатом, но я не понимаю другие темы)
Я работаю с C # и у меня есть третье лицоdll
для этого нужны массивы int (или указатели на массив int) в качестве параметров. Как мне упорядочить массив int между C # и C / C ++? Функции объявлены так:
// reads/writes int values from/into the array
__declspec(dllimport) void __stdcall ReadStuff(int id, int* buffer);
В Сint*
будет указатель правильно? Так что я запутался, если мне придется использоватьIntPtr
или если бы я мог использоватьint[]
(предпочтительнее)? Я думал, что это может быть хорошо:
[DllImport(dllName)]
static extern void ReadStuff(int id, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_I4)] ref int[] buffer);
// call
int[] array = new int[12];
ReadStuff(1, ref array);
Будет ли это работать? Или как мне объявить эту функцию в C # в безопасном коде?