c++到c#:有3个元素的字节指针数组等于什么?

本文关键字:于什么 数组 什么 指针 字节 3个 元素 c++ | 更新日期: 2023-09-27 17:53:27

我用c++写了这段代码

BYTE * apData[3]

如何将其转换为c# ?(我使用DllImport)

c++到c#:有3个元素的字节指针数组等于什么?

就用byte[]:

[DllImport EntryPoint="myfunc"]
public extern static void MyFunc(byte[]);
byte[] apData = new byte[3];
MyFunc(apData);

这是一个指向BYTE的长度为3的数组。

假设this出现在结构体中,它被声明为:

[MarshalAs(UnmanagedType.ByValArray, SizeConst=3)]
IntPtr[] apData;

或者,如果数组作为形参传递,则像这样声明该形参:

[MarshalAs(UnmanagedType.LPArray, SizeConst=3)]
IntPtr[] apData

可以使用原始指针

[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="fun")]
public static extern void fun(System.IntPtr byte_array) ;

使用如下所示的DLLImport

[DllImport EntryPoint="func"]
public extern static void Func(byte[]);
byte[] apData = new byte[3];