我的碼具有類似處理refrence的指針/使用SWIG [C++到Java]雙指針
class IExample { ~IExample(); //pure virtual methods ...};
一類的接口繼承接口等
class CExample : public IExample { protected: CExample(); //implementation of pure virtual methods ... };
和全球函數來創建這個類的對象 -
createExample(IExample *& obj) { obj = new CExample(); } ;
現在,我嘗試使用痛飲獲取Java API的包裝中,SWIG生成的接口有像construcotr - IExample(long cPtr, boolean cMemoryOwn)
和全局函數變爲createExample(IExample obj)
問題是,當我這樣做,
IExample exObject = new IExample(ExampleLibraryJNI.new_plong(), true /*or false*/); ExampleLibrary.createExample(exObject);
createExample(...)
C++層的API成功調用,但是,當調用返回到Java層時,cPtr (long)
變量不會被更新。理想情況下,這個變量應該包含地址CExample
對象。
我在文檔中讀到typemaps可以用來處理輸出參數和指針引用;但是,我無法找出使用類型映射來解決此問題或其他解決方法的適當方法。
請建議如果我做錯了什麼,或者如何在這種情況下使用typemap?