我在C ++中有这段代码
BYTE * apData[3]
如何将其转换为C#? (我使用的是DllImport)
答案 0 :(得分:2)
只需使用byte[]
:
[DllImport EntryPoint="myfunc"]
public extern static void MyFunc(byte[]);
byte[] apData = new byte[3];
MyFunc(apData);
答案 1 :(得分:1)
这是一个长度为3的数组,指向BYTE
的指针。
假设这出现在结构中,它就像这样声明:
[MarshalAs(UnmanagedType.ByValArray, SizeConst=3)]
IntPtr[] apData;
或者,如果数组作为参数传递,则声明该参数如下:
[MarshalAs(UnmanagedType.LPArray, SizeConst=3)]
IntPtr[] apData
答案 2 :(得分:0)
只需使用DLLImport,如下所示
[DllImport EntryPoint="func"]
public extern static void Func(byte[]);
byte[] apData = new byte[3];
答案 3 :(得分:0)
您可以使用原始指针
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="fun")]
public static extern void fun(System.IntPtr byte_array) ;