使用SWIG从Java访问结构中的指针数组

Sve*_*nov 6 c java swig

我有这样的事情:

typedef struct {
    char * content;
} Boo;

typedef struct {
    Boo **data;
    int size;
} Foo;
Run Code Online (Sandbox Code Playgroud)

我想在Java中用SWIG 转换Boo ** data为带有Booelements(Boo[])的数组.然后读取数组(我不想编辑,删除并从Java代码创建一个新数组).在SWIG文档中描述了如何使用carrays.i和执行此操作array_functions,但struct的成员data必须是类型Boo*.我的问题有解决方案吗?

编辑:我匆匆忙忙,我忘记写了我想用SWIG生成Java类来与C结构合作.

Sve*_*nov 3

解决办法很简单。只需在 swig 界面中使用:

%include <carrays.i>
%array_functions(Boo *, boo_array);
Run Code Online (Sandbox Code Playgroud)

然后从java访问:

SWIGTYPE_p_p_Boo results = foo.getData();
for(int i = 0; i < foo.getSize(); i++) {
    Boo booResult = foo.boo_array_getitem(results, i);
}
Run Code Online (Sandbox Code Playgroud)

检索数组的内容。