dealWithComplexClasses

dealWithComplexClasses

考虑一个声明了以下函数的SomeClass.h

void doSomethingSimple(double);
void dealWithComplexClasses(ComplexClass&);

我想用Java公开doSomethingSimple(double),但不公开dealWithComplexClasses(ComplexClass&)
我已经尝试过各种方法,例如:
%ignore SomeClass::dealWithComplexClasses(ComplexClass&);
%ignore SomeClass::dealWithComplexClasses;

我还找到了this SO question,它可以回答但没有帮助我(虽然问题是相似的,所以我必须缺少一些东西)
但是最后,Swig总是为ComplexClass创建一个代理Java类,并且dealWithComplexClasses(SWIGTYPE_p_ComplexClass class)中有一个SomeClass.java
我该如何告诉Swig仅针对我要在Java中公开的内容生成代码?还是忽略我不想公开的函数和类?

最佳答案

您在做正确的事。 %ignore SomeClass::dealWithComplexClasses应该可以正常工作,因此我怀疑您正在同时尝试其他操作,并且将错误解释为表明该操作无效。尝试:

%ignore ComplexClass; // will not wrap ComplexClass
%ignore SomeClass::dealWithComplexClasses; // do not wrap that method or any of its overloads

但您从帖子中看不出的另一种可能性是,您的类位于 namespace 中。在这种情况下,您需要添加 namespace 。

如果仍然无法使用,则需要更多信息,为此发布一个最小的.i和.h。

10-07 22:17