Bonjour,
Un morceau de code relativement simple provoque une erreur :
Il écrit quelque chose dans un champ et tente de le lire. La lecture provoque une erreur, apparement sur l'appel de GetFieldID d'après le log produit par la JVM.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 JNIEXPORT void JNICALL Java_Test_testFunction (JNIEnv *env, jobject obj) { jclass cls = env->GetObjectClass(obj); jfieldID fid = env->GetFieldID(cls, "interfaceData", "I"); env->SetIntField(cls, fid, (jint)3); jclass cls2 = env->GetObjectClass(obj); jfieldID fid2 = env->GetFieldID(cls2, "interfaceData", "I"); jint i = env->GetIntField(cls, fid); }
Il y a peut être quelque chose d'évident, mais je ne vois pas quoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 V [libjvm.so+0x2d06c6] C [libTest.so+0x1c06] ZN10_Jv_JNIEnv10GetFieldIDEP8__jclassPKcS3_+0x2e
Si le fait que les appels soient doubles (cls-cls2, fid-fid2, etc.) vous gênent, ils sont en fait à des endroits différents dans le vrai code, mais les mettre l'un après l'autre provoque une erreur identique, que je ne comprends toujours pas.
Une idée ?
Blustuff.
Partager