2

Android 2.3.6 ソース ツリーに C++ ライブラリを追加することに成功しました。Javaから使用するためにライブラリをラップしたいのですが、その手順についてネットでたくさん検索しましたが、見つけたほとんどすべての例は、Hello Worldの例と単純なものです...これらから例 私は必要なネイティブ関数をプレフィックス native で呼び出す Java ファイルを作成し、ヘッダーを生成して C++ ファイルを実装する必要があることを理解しました。

しかし、この方法でライブラリ関数を呼び出す方法がわかりません。これらのヘッダーと私の関数の間の接続は何ですか..? 私は今本当に混乱しており、開始方法がわからないので、誰かがC ++ライブラリ(すでにaospに統合されている)をラップする手順を教えてくれたらありがたいです

4

2 に答える 2

3

これは非常に複雑な問題であり、おそらくここでの短い回答の範囲を超えています。最善の方法は、これまでに見つけたドキュメントよりも優れたドキュメントを紹介することです。

この一連のブログ投稿は特に役立つようです: http://thebreakfastpost.com/2012/01/21/wrapping-ac-library-with-jni-introduction/

ラッパーの自動生成機能も役立つ場合があります。ここで試していないものがあります: http://www.teamdev.com/jniwrapper/features/

于 2013-03-28T17:23:21.447 に答える
2

あなたの問題を理解した場合:

このメソッドを備えた C++ ライブラリがあるとします。

int cPlusPlusMethod{
  // Your c++ implementation
}

基本的にあなたがしなければならないことは次のとおりです。

  1. 必要な Java メソッドを作成する

    ネイティブ int javaMethod();

  2. C++ ヘッダーを作成するために見つけたリンクで見た手順に従ってください。次のようなものになります。

    JNIEXPORT jint JNICALL Java_yourPackageName_yourJavaClass_javaMethod(JNIEnv *);

  3. これで、必要なすべてのメソッドの宣言を含む C++ ヘッダーが作成されました。そのヘッダーを実装する c++ ファイルを作成し、ライブラリの c++ 実装をコピーして貼り付けます。

JNIEXPORT jint JNICALL Java_yourPackageName_yourJavaClass_javaMethod(JNIEnv *env){ // C++ 実装 }

(必要なすべてのインポートを含め、lib の他のファイルを「jni」フォルダーに配置する必要があります。)

Android プロジェクトのルート フォルダーから ndk-build を実行するだけです。

多分これはそれを行うための最も賢い方法ではありませんが、少なくとも私にとってはうまくいきました. ライブラリのソース ファイルがあれば、明らかにこれは機能します。スタティック ライブラリについて話しているのであれば、私はあなたを助けることはできません。

于 2013-03-28T17:09:57.637 に答える