2011-11-16 28 views
3

私はNDKバージョンをr6からr7に更新しました。その後、私のネイティブファイルをコンパイルするときにこのエラーが発生します。Android NDKはr6からr7への更新後にJNI_GetCreatedJavaVMsを見つけることができません。

error: 'JNI_GetCreatedJavaVMs' was not declared in this scope

APIレベル8(Android 2.2)用にプロジェクトをビルドしています。私はGetCreatedJavaVMsはその後、私は

(MY_NDK_PATH_R7)/platforms/android-8/arch-arm/usr/include/jni.h

をチェックし、それが実際にはファイルで宣言され、ファイルjni.hが実際

(MY_NDK_PATH_R6)/platforms/android-3/arch-arm/usr/include/jni.h

へのシンボリックリンクです

(MY_NDK_PATH_R6)/android-8/arch-arm/usr/include/jni.h

を検討してきました、シンボリックリンクではありません。

Eclipseでプロジェクトをビルドしていますが、環境設定で指定した唯一のものはndk-buildへのパスです。

EDIT:

/* 
* 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 

しかし、どのように私はこのケースでVMを取得する必要があります:GetCreatedJavaVMsが見つからなかった理由をOK、それが今明らかですか?

答えて

4

解決策が見つかりました。 JNI_OnLoad(JavaVM * vm、void * reserved)関数を実装するだけで済みます。 JVMは引数です。 おそらく、これはJVMを入手するためのより良い方法です。

+0

これは優れた観察です。私は静的変数に保存し、必要なときにいつでも再利用することがうまくいくことを発見しました。 –