C ++到C#:相当于带有3个元素的字节指针数组

时间:2014-03-26 13:19:41

标签: c# c++ pinvoke dllimport

我在C ++中有这段代码

BYTE * apData[3]

如何将其转换为C#? (我使用的是DllImport)

4 个答案:

答案 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) ;