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
}
但是,由於這顯然是一個醜陋的黑客,我強烈建議完全避免它,只需在源代碼發佈中像正常一樣寫類。