如何在JNA中从C调用具有这种方法签名的方法?
C方法的最后两行看起来像这样:
int open_device(context *ctx, device **dev, int index);
C方法的最后两行看起来像这样:
*dev = pdev;
return 0;
这个方法中dev
的唯一用途就是如此。这意味着我需要将一个空指针的指针传递给该方法,对吗?然后该方法会使用device
对象的地址填充空指针,我可以将指向设备的指针传递给其他方法。
我的问题是:这样做是否正确?如果是,我该如何从Java中分配一个新的指针?
根据被接受的答案,我这样做:
Memory p = new Memory(Pointer.SIZE);
Memory p2 = new Memory(Pointer.SIZE);
p.setPointer(0, p2);
nativeLib.open_device(ctx, p, index);
return p2;
*p = p2
,但 C 函数会执行*p = pdev
,从而覆盖该值。 - casablanca