私はアンドロイドプロジェクト(3Dリアルタイムアプリケーション)に取り組んでおり、私が作成したC++ライブラリを使用したいと考えています。それはテンプレートに依存しているので、私はそれの周りにJavaラッパーを書くための良い解決策を探しています。Android用Java C++ラッパー:C++テンプレートをラップする方法
私が持っていた考えの1つは、オブジェクトを作成するときに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を追加するだけの場合、対応するC++クラスのインスタンスを作成するにはどうすればよいですか? – Pedro