如何为 C 函数编组固定字节数组



嗨,我一直在努力为要在 C# 中使用的第三方 C 库的 dll 创建一个包装器。

假设我有库中的 C 函数:

void functionA(byte data[16], byte buffer[8]);

使用以下代码包装上面的代码是否正确?

[DllImport("C.dll",CallingConvention=CallingConvention.Cdecl)]
static extern void functionA(byte[] data, byte[] buffer)

不,该声明仅对byte *data有效,它是指向数组的指针。

您拥有的是一个固定大小的数组,为此您需要以下内容

[DllImport("C.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void functionA(
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16]
byte[] data,
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8]
byte[] buffer)

相关内容

  • 没有找到相关文章