主要是写工具Swig关于c/c++ 到Java层调用问题
问题描述:
typedef struct
{
int x, y, z;
} Test;void test_function(Test * testArrray, int arrlen){
for(int i =0;i<arrlen; i++){
testArray[i].x =i;
testArray[i].y =i
testArray[].z =i;
}
};
当你需要用swig工具将函数test_function用于Java层的时候,需要向test_function 传递一个由swig生成的Java类型Test 类型的数组,并在Java层获取C对Test结构中x,y,z 中的修改的值。
问题解决:
文件名:array_test.i
%module array_test
%include <arrays_java.i>
%{
typedef struct
{
int x, y, z;
} Test;
%}
JAVA_ARRAYSOFCLASSES(Test)
typedef struct
{
int x, y, z;
} Test;
%apply Test[] { Test * structArray }
参考:
http://swig.10945.n7.nabble.com/Help-with-JAVA-ARRAYSOFCLASSES-td7389.html
目的:记录一下工作中遇到需要解决的问题。