2017-08-15 12 views
0
public class MyOpaqueBasedJSONDict implements IMyJSONDict { 

    private final long _myNativeCPPObj; 
... 

public IMyJSONDict getMyJSONObj(String keyName) { 
     long retVal = nativeGetJSOBObject(_myNativeCPPObj,keyName); 
     return (new MyOpaqueBasedJSONDict(retVal)); 
    } 

native implementation 
NIEXPORT jlong JNICALL 
Java_com_hexample_myndkapplication_MyOpaqueBasedJSONDict_nativeGetJSOBObject(JNIEnv *env, 
                      jobject instance, 
                      jlong myNativeCPPObj, 
                      jstring keyName_) { 
    const char *keyName = env->GetStringUTFChars(keyName_, 0); 

    Json::Value* nativeCppJson_ptr = reinterpret_cast<Json::Value*> (myNativeCPPObj); 

    Json::Value& map = *nativeCppJson_ptr; 

    Json::Value& jsonVal = map[keyName]; 
    env->ReleaseStringUTFChars(keyName_, keyName); 
    return (jlong) &jsonVal; 
} 

私が理解することはできませんよ:無効jオブジェクトの使用0xb4019a80 8月16日03:25:56.785 20537から20537/com.hexample.myndkapplicationのA /アート:アート/ランタイム/ java_vm_ext.cc:410]長いcom.hexample.myndkapplication.MyOpaqueBasedJSONDict.nativeGetJSOBObjectからJNI検出されたエラー:JNIは、アプリケーションでエラーを検出し、なぜ私が取得しています無効jオブジェクトの使用は

NDKで無効なメモリエラーをデバッグする方法の任意の手掛かり。私はAndroidとndkの開発にはかなり新しいです。

答えて

1

私のAndroid搭載アプリケーションで同様の問題が発生しました。さらに、String引数がJNIが指摘する "無効なjobject"であることがわかりました。私は引数として空でない文字列を入力しようとしましたが、エラーはなくなりました。なぜそれがそれなのかわかりません。回避策として役立つことを願っています。

関連する問題