SWIG:生成附加(手动)Java类

时间:2012-05-28 12:07:42

标签: swig

我正在使用SWIG为我的DLL生成Java JNI包装器。

作为其中的一部分,我想生成一个自定义异常类,但我想自己为我的异常类提供完整的Java类实现。

我当然可以将我的Java类放在一个单独的文件中,但是可以将这样的手工Java类嵌入到SWIG脚本中吗?

1 个答案:

答案 0 :(得分:1)

除非类是某种类的内部类,否则你只需将其编写为单独的文件,因为这是编译Java时所需要的。

我有点疑惑为什么你想要编写自己的纯Java异常类 - 与SWIG相关的正常做法是派生自std::exception,即使它是通过%inline指令并且自然而且免费地将C ++异常层次结构与Java一起合并。

如果您真的想要(虽然我个人永远不会)从SWIG界面生成纯Java类,您可以使用一种解决方法:

%module test

%nodefaultctor MyException;
%typemap(javabody) MyException %{
  // Java stuff goes here (or in javacode typemap)
%}
%typemap(javafinalize) MyException ""
%typemap(javadestruct) MyException ""

struct MyException {};

生成:

public class MyException {
  // stuff goes here

}

但是,由于这显然是一个丑陋的黑客,我强烈建议完全避免它,只是在你的源代码发布中正常编写类。