(Я понимаю, что это может быть дубликат, но я не понимаю, другие темы)Как маршалу Int Массивы или указатели на Int Массивы
Я работаю с C# У меня есть третья партия dll
что В качестве параметров требуется int array (или указатели на int array). Как я могу объединить массив int между C# и C/C++? Эти функции объявлены следующим образом:
// reads/writes int values from/into the array
__declspec(dllimport) void __stdcall ReadStuff(int id, int* buffer);
В C 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# в безопасном коде?
+1 для 'static extern void ReadStuff (int id, int [] buffer);' – dtb