考虑SomeClass.h使用声明的以下函数
void doSomethingSimple(double);
void dealWithComplexClasses(ComplexClass&);
Run Code Online (Sandbox Code Playgroud)
我想doSomethingSimple(double)用Java 公开,但不是dealWithComplexClasses(ComplexClass&)
我尝试了各种各样的东西,比如:
%ignore SomeClass::dealWithComplexClasses(ComplexClass&);
%ignore SomeClass::dealWithComplexClasses;
Run Code Online (Sandbox Code Playgroud)
我也发现这个SO问题得到了回答,但没有帮助我(虽然问题类似所以我必须遗漏一些东西)但最后Swig总是为ComplexClass创建一个代理java类,并且dealWithComplexClasses(SWIGTYPE_p_ComplexClass class)在SomeClass.java
我怎么能告诉Swig只为我想用Java公开的内容生成代码?或者忽略我不想公开的函数和类?
Oli*_*ver 10
你正在做正确的事.该%ignore SomeClass::dealWithComplexClasses应该是有效的,所以我怀疑你是在同时尝试其他事情并将错误解释为表明这没有用.尝试:
%ignore ComplexClass; // will not wrap ComplexClass
%ignore SomeClass::dealWithComplexClasses; // do not wrap that method or any of its overloads
Run Code Online (Sandbox Code Playgroud)
另一种可能但无法从您的帖子中得知的是,您的类位于命名空间中.在这种情况下,您需要预先添加名称空间.
如果它仍然不起作用,需要更多信息,为此发布最小的.i和.h.