2012-04-16 15 views
1

これは本当に新人質問かもしれませんが、私はC++で書かれた.soライブラリを使用する必要があるAndroidアプリを書いています。 .soはいくつかのクラスで構成されており、JNIではなくジェネリックC++になっています。Android Javaからネイティブ関数を呼び出す - JNIの代わりに

JNI以外のAndroid JavaアプリケーションからC++関数を呼び出す方法はありますか?私がJNIについて見たことは、ネイティブコードをJNI固有のものに書き直さなければならないことを示唆しています。これは、.soだけが与えられていれば本当に不便です。

Android 4.0.3のJavaアプリケーションからネイティブ関数を呼び出す代替方法はありますか? C++関数を呼び出し、Javaから呼び出すことができる小さなJNI-C++プログラムを書くのはいかにシンプルでしょうか?

Eclipseでプロセスを簡略化するものはありますか?

もっと洗練された解決策がないのは驚かないでしょう。

答えて

0

ライブラリのJNIラッパーを作成するよりも、より洗練されたソリューションはないと思います。とにかく、サポートしたいアーキテクチャごとにネイティブコードの別々のバージョンをコンパイルする必要があるので、おそらく良い考えではありません。コンパイルされたライブラリにアタッチするだけで、あなたはアーキテクチャによって邪魔をしていることになります。

+0

私のネイティブライブラリ(相互にインターフェイスする5つのクラスがありますが、ユーザーエンドは1つのクラスをインスタンス化してダース関数を呼び出す必要があります)が複雑であるため、SWIGを使用する必要があります。誰かが、Windowsシステムを使ってAndroid向けにコンパイルするには、良い基本的なSWIGチュートリアルを知っていますか?はい、Linuxでコンパイルする方が簡単ですが、ここではオプションはありません。 – eskimo9

0

これはAndroid固有ではありませんが、Java Native Access(JNA)をご覧ください。 libffiを使用してネイティブコードにアクセスすることができます(JNIを使​​用せずに)。

関連する問題