我在java中有一个包装函数,如下所示:
dosomething(SWIGTYPE_sometypeSTRUCT STRUCTtype);
最初在C代码中,声明看起来如此:
dosomething(sometypeSTRUCT* structtype);
如何将SWIGTYPE传递给java函数。 如果我做: SWIGTYPE_sometypeSTRUCT something = new SWIGTYPE_sometypeSTRUCT();
它不起作用..只有在我设置somthing = null时它才会起作用。
答案 0 :(得分:1)
问题是SWIG没有看到sometypeSTRUCT
的定义 - 只要知道你的dosomething
函数所采用的指针是不透明的类型。
当SWIG不知道细节时,它无法有意义地包装它,唯一安全的做法就是让你用C这样的类型做你能做的事情。
要解决此问题,您可能希望使用%include
来引入结构的定义,或者可能在SWIG接口文件中提供定义。