簡體   English   中英

適用於Android的Java C ++包裝器:如何包裝C ++模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM