У меня есть следующая структура в C #:
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct RECORD
{
public uint m1;
public uint m2;
public uint m3;
}
Мне также нужно передать массив (фиксированной длины) этих структур в собственный код, который записывает некоторые данные в эти структуры. Массив размещается в C # и передается в C dll. Я объявил импортированную функцию как:
[DllImport("marshall.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void doIt(RECORD[] dataRecord);
но я не получаю никаких данных. Я уже пробовал PInvoke Interop Assistant. Должен ли я использовать IntPtr здесь? Есть идеи?
Edit:
Вот код C # для вызова нативной функции:
RECORD[] rec = new RECORD[256];
doIt(rec);
// values of rec are all zero here
Вот функция C:
int doIt(RECORD* rec)
{
// deref pointer and write some data
}