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の開発にはかなり新しいです。