[英]Java C++ Wrapper for Android: how to wrap c++ templates
我正在研究一個android項目(一個3d實時應用程序),並且想使用我編寫的c ++庫。 由於它依賴模板,因此我正在尋找一個好的解決方案來圍繞它編寫Java包裝器。
我有一個想法,就是在創建對象時在JNI調用中包含Java類名稱。 例如,我實例化這樣的Java類:
//java
A a = new A(Integer.class());
//jni call
if(strcmp("java.lang.integer", className) == 0) return (jlong) new A<int>();
else if(strcmp("java.lang.float", className) == 0) return (jlong) new A<float>();
else if( .... )
這種解決方案的問題是,每當我要使用新的數據類型時,都必須添加另一個elseif代碼塊並再次編譯c ++代碼。
該解決方案的問題在於,每當我要使用新的數據類型時,都必須添加另一個elseif代碼塊。
請記住,Java中只有8種原始類型。 如果為每一個添加一個if-else,則將能夠處理任何原始類型參數。
如果您還為jobject
添加了一個案例,那么您也可以使用它來處理任何對象類型。 請小心處理正確的JNI對象引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.