C# - 从非托管代码返回int *类型

时间:2014-08-29 10:10:20

标签: c# arrays api unmanaged

我正在编写一个小应用程序,通过API与外部设备通信(均为64位)。我从我尝试使用的指南中获得了以下方法:

int* GetRevision( void* cu_ptr, int num)

我尝试PinVoke模式:

[DllImport("ABCAPI.dll")]
public static extern IntPtr GetRevision(IntPtr cu_ptr, int num);

我试图将IntPtr复制到一个int数组:

var check = GetRevision(device_cu_ptr, 1);
int[] arr = new int[10];  
Marshal.Copy(check, arr, 0, arr.Length);

在c#中有更好的方法将INT*转换为Int[]吗?或者我的代码中可能有错误吗?

1 个答案:

答案 0 :(得分:0)

好吧,看起来Marshal.Copy是转换这些数据类型的正确方法。

var check = GetRevision(device_cu_ptr, 1);
int[] arr = new int[10];  
Marshal.Copy(check, arr, 0, arr.Length);