1

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

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

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

4

1 回答 1

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

}

但由于这显然是一个丑陋的 hack,我强烈建议完全避免它,而只是在你的源代码分发中像往常一样编写类。

于 2012-05-29T08:39:45.693 回答