アンドロイドツールチェーンには "jni.h"ヘッダーがありますが、リンク先のライブラリはありません。アンドロイドツールチェインにリンクするJNIライブラリがありません
私のアプリでCコードからJava関数を呼び出すにはどうすればいいですか?
アンドロイドツールチェーンには "jni.h"ヘッダーがありますが、リンク先のライブラリはありません。アンドロイドツールチェインにリンクするJNIライブラリがありません
私のアプリでCコードからJava関数を呼び出すにはどうすればいいですか?
AndroidはJNIライブラリをエクスポートしません。つまり、システムには、ユーザ空間のCコードからJNI_CreateJavaVM()
と彼女のilkを呼び出す方法はありません。独自のJVMを作成することはできますが、Javaは同じではなく、Android SDKのクラスとメソッドにアクセスすることはできません。
Androidでは、特別なJVM(DalvikまたはART)を使用してZigoteプロセスが開始され、JavaはCコード(.so
ファイル形式)を読み込むことができます。逆もありません。
あなたのCコードでは、CallVoidMethod()
のような標準のJNIテクニックを使用して、Javaメソッドを呼び出すことができます。 Android SDKのJavaメソッドでは、多くの場合、context
のような「ハンドル」が必要であることに注意してください。通常、これらのハンドルを与えるJavaからCへの呼び出しに依存する必要があります。
ヘッダーで十分ですか、そうでないと思われるコンパイル時エラーがありますか? _ "私のアプリでCコードからJava関数を呼び出すにはどうすれば教えてくれますか?_はい:http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html – Michael