如何通过JNA传递指针数组?

时间:2016-05-03 10:21:23

标签: jna

爪哇:

Pointer[] myArray;

myArray是一系列指针。

C ++

myfun(void** myArray){
    void *a = myArray[0];
}

如何通过JNA传递指针数组? 我在Java中尝试了myfun(Pointer[] myArray),但它在运行时报告不支持参数类型,如下所示: 引起:java.lang.IllegalArgumentException:class [Lcom.sun.jna.Pointer;不是受支持的参数类型(在类com.xx.yy.zz中的方法myfun中)

1 个答案:

答案 0 :(得分:0)

谢谢,我已经解决了这个问题 创造一个结构 在Java中:

public class xxPointer extends Structure {
    public Pointer myPointer; 

在C ++中:

struct xxPointer {
    void* myPointer;
};

接口: 在Java中:

myFun(xxPointer.ByReference br);

在C ++中:

myFun(xxPointer * xp)
Java中的

xxPointer.ByReference rp = new xxPointer.ByReference();
xxPointer.ByReference pointers = (xxPointer[]) rRecord.toArray(array count);
assignment value for pointers[i].myPointer
myFun(rp);