我正在编写一个小应用程序,通过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[]
吗?或者我的代码中可能有错误吗?
答案 0 :(得分:0)
好吧,看起来Marshal.Copy是转换这些数据类型的正确方法。
var check = GetRevision(device_cu_ptr, 1);
int[] arr = new int[10];
Marshal.Copy(check, arr, 0, arr.Length);