JNIからSTLライブラリを呼び出す方法はありますか?JNIはネイティブ呼び出し用のCのようなインターフェイスを提供していると思いますが、これをC++テンプレートライブラリでどのように実現できますか?JNIを使用してJavaからC++のSTLライブラリを呼び出す方法はありますか?
答えて
普通のSTLだけを探しているのであれば、おそらくJavaライブラリを代わりに使うことができます。ただし、STLのラッピングを主張する場合、SWIGはJNIで基本的なメカニズムについてはthisを参照しているSTLラッピングを提供します。これは、比較的安定した、テストされたコードを生成するはずです。
これは可能ですが、私はそれを自分でやっていません。しかし、JNIコードは、あなたが非常に注意していなければJVMをクラッシュさせる可能性があります。また、JNIコードはJavaコードよりも保守がはるかに困難です。私はJava - > JNI - > STLとCOMコードが捨てられ、同じSTLとCOMとソケットにアクセスするC#に置き換えられたプロジェクトに参加しました。私たちは振り返ることはありません。
小文字の JNIの場合は、それだけの価値があります。 JNI経由で大規模なインターフェイスを作成する場合は、JavaではなくC#でSTLと対話するコンポーネントを記述し、ソケットを使用してC#コンポーネントとJavaコンポーネント間で通信することを強くお勧めします。これは、からに書込み、テスト、および保守が容易になります。
私はなぜ JavaからSTLライブラリを使用する必要があることを尋ねる必要があります。 Javaの膨大なライブラリ群によって提供されていないものがありますか?
自分のコードを呼び出す必要がある理由は理解しています(Javaコードのプロファイリングをして、それが必要であると判断した場合、そうでなければあなたの努力は浪費されます)。しかし、STLを呼び出す方法を尋ねているようですものを直接。
私たちはしばしばJNIに問題があり、コードの可搬性が低下するため、非常にが当社のショップで使用したい理由で、 Java提供のものは適切ではありません。
はい。 C++ STLクラスをJavaオブジェクトに変換するには、swig typemapを使用する必要がありました。逆もまた同様でした。 詳細については、 http://www.swig.org/Doc2.0/Android.html
をご覧ください。- 1. JNIを使用してCからStringを返すJavaメソッドを呼び出す方法は?
- 2. JNIを使用してJavaでC#コードを呼び出す
- 3. Android Contextパラメータを持つC++/JNIからJavaメソッドを呼び出す方法
- 4. JNIを使用して別のスレッドから静的Javaメソッドを呼び出す
- 5. JavaからC++関数を呼び出すJNI - Cocos2d-x
- 6. リエントラントでないCライブラリ呼び出しの使用にフラグを立てる方法はありますか?
- 7. Linux上のアセンブリコードからCライブラリを呼び出す方法は?
- 8. Javaから呼び出されたBoost C++ファイバーへのJNI呼び出しを作成できますか?
- 9. ExcelからC#ライブラリを呼び出す方法は?
- 10. JNI呼び出しAPI - NoClassDefFoundError(C/Java)
- 11. ストアドエンティティを使用してメソッドを呼び出す方法はありますか?
- 12. Android JNIネイティブコードのC++オブジェクトはガベージコレクションを呼び出しますか?
- 13. PythonからC#ライブラリを呼び出す
- 14. C++からHaskellライブラリを呼び出す
- 15. JNIが呼び出すCプログラムからC関数を呼び出すことはできますか?
- 16. JNIを使用したJavaからのDLLメソッドの呼び出し
- 17. Cコードからアセンブリ関数を呼び出す方法はありますか?
- 18. FireFoxでJavaScriptからC#dllを呼び出す方法はありますか?
- 19. C#から "Identify Monitors"関数を呼び出す方法はありますか?
- 20. JNI(C++)を使用してネイティブスレッドからJavaメソッドを呼び出す際に問題が発生する
- 21. JavaのC#DLLから関数を呼び出す方法は?
- 22. WCFライブラリからcmdコマンドを呼び出す方法C#
- 23. Java JNI呼び出しライブラリロード
- 24. JNIを使用して別のJNIライブラリをロードしますか?
- 25. 例外NOSUCHMETHODERRORがCからJNIを介してCからJavaメソッドを呼び出すとき
- 26. 有効なポインタを使用してCからメソッドを呼び出した後のJava JNI NullPointerException
- 27. JavaからC++を呼び出す方法は?
- 28. NDK C++スレッドからJava APIを呼び出す方法は?
- 29. NDK C++からJavaを呼び出す方法は?
- 30. JNIを使ってJavaでオーバーライドされたスーパークラスメソッドを呼び出す方法は?