1
我正在使用SWIG为我的DLL生成Java JNI包装。SWIG:生成额外的(手动)Java类
作为它的一部分,我想生成一个自定义异常类,但我想为自己的异常类提供完整的Java类实现。
我当然可以将我的Java类放在一个单独的文件中,但是可以将这样一个手动滚动的Java类嵌入到SWIG脚本中吗?
我正在使用SWIG为我的DLL生成Java JNI包装。SWIG:生成额外的(手动)Java类
作为它的一部分,我想生成一个自定义异常类,但我想为自己的异常类提供完整的Java类实现。
我当然可以将我的Java类放在一个单独的文件中,但是可以将这样一个手动滚动的Java类嵌入到SWIG脚本中吗?
除非这个类是某种类的内部类,否则你几乎已经把它作为一个单独的文件写下来了,因为这就是编译Java时需要的东西。
我稍微感到困惑,为什么你会想,虽然写自己的纯Java异常类 - 正常的事情与SWIG将不会发生任何std::exception
得出,即使是通过%inline
指令和合并C++的异常层次结构Java自然而然地免费。
有一个解决办法,如果你真的想你可以使用(虽然我个人neverdo它)来从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
}
但是,由于这显然是一个丑陋的黑客,我强烈建议完全避免它,只需在源代码发布中像正常一样写类。