java - SWIG - 如何忽略我不需要公开的 C++ 类(在 Java 中)?

标签 java c++ swig

考虑声明了以下函数的 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 类,并且 SomeClass.java

中有一个 dealWithComplexClasses(SWIGTYPE_p_ComplexClass class)

如何告诉 Swig 只为我想在 Java 中公开的内容生成代码?或者忽略我不想公开的函数和类?

最佳答案

你做的是对的。 %ignore SomeClass::dealWithComplexClasses 应该有效,所以我怀疑您同时尝试了其他事情,并将错误解释为表明这无效。尝试:

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

另一种可能性,但无法从您的帖子中看出,您的类位于命名空间中。在这种情况下,您需要在前面加上命名空间。

如果它仍然不起作用,需要更多信息,请为此发布一个最小的 .i 和 .h。

关于java - SWIG - 如何忽略我不需要公开的 C++ 类(在 Java 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561233/

相关文章:

java - 使用 Twitter4j,我如何等待所有异步调用完成?

java - Ubuntu 上的 Desktop.getDesktop().open(file) 无法正常工作

c++ - 我应该创建一个类对象吗?

c++ - C++ 属性可以用来代替 OpenMP pragma 吗?

c++ - Lua + SWIG 猴子补丁

java - JDBC 未连接

java - 从 Java/Scala 实例化 Rhinoscript native 对象

c++ - 交叉编译库通信

c++ - Swig + tcl + c++(内存管理)

c++ - 如何创建同时适用于多种语言的包装器?