我的SWIG接口文件中有以下结构,因此我的sample.h头文件。我假设从这个结构中的sockaddr,ios_boolean和unsigned char定义是我得到下面生成的类的原因。如果我知道在Java端的ios_boolean和unsigned char map上的类型有没有办法使用%apply来摆脱生成的指针类?我试过%apply int {ios_boolean};但后来我得到了一个SWIGTYPE_p_boolean.java。有什么想法吗?
%rename (Sample) sample_details_t_;
typedef struct sample_details_t_ {
ios_boolean is_allowed;
unsigned char mac[11];
} sample_t;
generates:
SWIGTYPE_p_unsigned_char.java
SWIGTYPE_p_ios_boolean.java
例外:
[exec] ewapi_wrap.c:982: error: `true' undeclared (first use in this function)
[exec] ewapi_wrap.c:982: error: (Each undeclared identifier is reported only once
[exec] ewapi_wrap.c:982: error: for each function it appears in.)
[exec] ewapi_wrap.c:982: error: `false' undeclared (first use in this function
答案 0 :(得分:2)
你可能想做类似的事情:
%include <arrays_java.i>
%rename (Sample) sample_details_t_;
%apply bool { ios_boolean };
typedef struct sample_details_t_ {
ios_boolean is_allowed;
unsigned char mac[11];
} sample_t;
这将mac
包装为short[]
(对数组大小有约束),将is_allowed
包装为Java boolean
并生成这些文件:
Sample.java test.java testJNI.java
确保删除旧版SWIG界面中存在的旧SWIGTYPE_*.java
文件,如果您执行javac *.java
之类的操作,它们将不会自动删除,也可能无法编译。