簡體   English   中英

如何為 C 函數編組固定字節數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM