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/

相关文章:

c++ - 什么是 C++ GSL 指南?

java - 转换乔达日期时间

c++ - 在Copy构造函数中分配整个对象?

java - 在Java类中实现@ routes.Assets.versioned(“”)

c# - 在C#客户端上接收从C++服务器发送的数据

python - 在virtualenv内部安装M2Crypto而不在系统上安装swig

c++ - SWIG:从模板继承和函数重载的问题

c++ - 函数之间的数组指针中的值丢失(与swig编译以在python3中使用)

java - 需要 Java 库——用于远程(例如 S3)文件的本地文件缓存

java - Android使一个元素只出现在纵向 View 中