我有这样的事情:
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结构合作.
解决办法很简单。只需在 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)
检索数组的内容。