私はNDK共有ライブラリを持っていますので、いくつかのテストを行いたいと思います。私は現在、ライブラリにリンクするネイティブ実行可能ファイルを作成するためにgoogletestを使用し、README.NDKの指示に従っています。ダミー実行ファイルは、Androidエミュレータで実行できます。良い。Androidネイティブ実行ファイルでJNIEnvのインスタンスを取得する
さて、トリッキーなものは共有ライブラリは、例えば、JNIEnvのインスタンスの機能の多くを呼び出すことです:
- env-> NewStringUTF()
- ...
質問は、Androidのネイティブ実行可能ファイルがJNIEnvのインスタンスを取得するにはどうすればいいですか?
1つの方法は、以下に説明する呼び出しAPIを使用することです。 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html
しかし、私はNDKのjni.h中を見て、そしてこのAPIの使い方を許可しないようだ:
/*
* VM initialization functions.
*
* Note these are the only symbols exported for JNI by the VM.
*/
#if 0 /* In practice, these are not exported by the NDK so don't declare them */
jint JNI_GetDefaultJavaVMInitArgs(void*);
jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*);
jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*);
#endif
任意の提案が高く評価されています!
(私は私が間違っている場合ので、私を修正してくださいAndroidに新しいです。ありがとう!)
ありがとうございますが、AttachCurrentThreadにはJavaVMが必要です。しかし、上記のコードスニペットが示すように、JNI_CreateJavaVMは許可されていません... – ZillGate