JNIの初期化グローバル変数(グローバルキャッシュ)

703 ワード

1、インタフェース、
//        
public native static void initIds();

2、ライブラリを動的にロードして初期化します.
static {
    System.loadLibrary("native-lib");
    initIds();
}

3、ヘッダファイル
JNIEXPORT void JNICALL Java_com_shaoshuaima_test_JniForC_initIds(JNIEnv *, jclass);

4,C++ファイル
//        ,         ,      。
jfieldID key_fid;
jmethodID random_mid;
extern "C"
JNIEXPORT void JNICALL
Java_com_XXX_XXX_XXX_initIds(JNIEnv * env, jclass jcls){
    key_fid = env->GetFieldID(jcls,"key","Ljava/lang/String;");
    random_mid = env->GetMethodID(jcls,"getRandomInt","(I)I");
}