グローバルに保存しJNIEnv
ているので、後で静的 Java メソッドを呼び出すことができます。しかし、へのグローバル ポインタを格納するJNIEnv
必要があるか、他の Java オブジェクトと同じように格納する必要があるか、それともこれを必要としない特殊なケースか。
JNIEnv* globalEnvPointer;
[JNICALL etc] void init(JNIENv* env, [etc])
{
//required?
globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
//or is this OK?
globalEnvPointer = env;
}
編集
私はここで少しばかげています. を使用するすべてのメソッドはglobalEnvPointer
init 内で呼び出されます. myinit
は実際には私のc
プログラムのmain
メソッドであり、プログラムの最後まで戻りません. また、c プログラムで他のスレッドを使用していません。これにより、答えが簡単になると思います。
JNIEnv* globalEnvPointer;
[JNICALL etc] void main(JNIENv* env, [etc])
{
//required?
globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
//or is this OK?
globalEnvPointer = env;
someMethod();
}
void someMethod()
{
//use globalEnvPointer here
}