2

JNIを介してメソッドにアクセスする場合、状態はどのように保持されますか?以下の例では、JavaコードがネイティブメソッドdrawFromJniを呼び出していますが、ネイティブクラス_ncは呼び出し間で永続化されますか?

NDK用のより優れたネイティブデバッグツールがあれば、これを見つけるのは非常に簡単ですが、NDKとC++に本当に問題があります。

extern "C" {
 JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv * env, jobject obj);
};

myNativeClass _nc;
JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv *  env)
{
     _nc.draw();
}
4

1 に答える 1

1

JNI関数の実装は、実装している言語のスコープ規則に従います。_ncをグローバル変数として宣言すると(例で行ったように)、アプリケーション全体で共有されます。

于 2010-02-19T17:25:17.647 に答える