我在 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助手了。我应该在这里使用IntPtr吗?有什么想法吗?
编辑:
这是调用本地函数的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
}