[英]How to marshall fixed byte array for C function
嗨,我一直在努力為要在 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.