JNI de la Chaîne de valeur de retour

J'ai un Java de la méthode d'instance qui retourne une Chaîne de caractères et je suis à l'appel de cette méthode à travers JNI en C++. J'ai écrit le code suivant:

const char *DiagLayerContainer_getDESC(JNIEnv *env, jobject diagLayer) {
    jclass diagLayerClass = env->FindClass(PARSER_CLASS);
    jmethodID getDESCDiagLayerMethodID = env->GetMethodID(diagLayerClass, "getDESCDiagLayer", "(Ljava/lang/Object;)Ljava/lang/String;");
    jstring returnString = (jstring) env->CallObjectMethod(diagLayer, getDESCDiagLayerMethodID);
    return env->GetStringUTFChars(returnString, JNI_FALSE);
}

Comment puis-je obtenir la chaîne et le convertir en un const char *?

Mon programme se bloque sur la dernière ligne avec une violation d'accès à 0x00000000. returnString n'est pas NULL.

Exécutez votre code dans un débogueur, et d'examiner l'état du processus au moment de l'accident.
Il se bloque ici (jni.h): const char* GetStringUTFChars(jstring str, jboolean *isCopy) { return fonctions->GetStringUTFChars(ce,str,isCopy); } sans aucune chance d'aller plus loin avec le débogueur

OriginalL'auteur Salvatore | 2013-03-07