【发布时间】:2014-08-29 10:10:19
【问题描述】:
我正在编写一个小型应用程序以通过 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[]?还是我的代码有错误?
【问题讨论】:
-
你的最后一句话暗示了这个代码不起作用的事实。如果是这样,你能解释一下为什么不是吗?
-
@PaulZahra:也找到了,但不,不是骗子。这主要是关于误解,而不是如何解决它。
-
您正在返回一个指向 int 的指针,而不是 int 本身。阅读:stackoverflow.com/questions/2699534/how-to-convert-int-to-int
-
如果您不知道,您如何期望 我们 知道?拿起电话给编写 C 代码的程序员打电话。