Bonjour,
Je me sert de JNI pour appeler une fonction d'une dll. Il y un truc qui cloche mais je n'arrive pas a l'identifier et je me demande si ça ne vient pas de mon alloc de tableau.
Voici le code
En debug le tableau utilisé a l'appel de run(3,argv) semble bien contenir tous les paramètres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 JNIEXPORT jint JNICALL Java_plugin_vision_core_devicemodeler_lib_ExtLib_extractImpl(JNIEnv* _env, jclass _this, jstring _param1, jstring _param2, jstring _param3) { if (!LoadLib(_env)) return JNI_FALSE; jint result = -1; // Tableau de paramètres convertis de jstring en const char. const char *param[3]; param[0] = _env->GetStringUTFChars(_param1, 0); param[1] = _env->GetStringUTFChars(_param2, 0); param[2] = _env->GetStringUTFChars(_param3, 0); // Copie du tableau dans un char** char *argv[3]; memcpy(argv, param, sizeof argv); // result = run(3, argv); // End return result; } int run(int argc, char** argv) { int doStuff(int argc, char** argv); return doStuff(argc, argv); }
Mais quand je regarde doStuff(argc,argv) à l'intérieur de la fonction run il ne semble plus y avoir que la première valeur dans le tableau.
Et donc la fonction doStuff ne s'exécute pas correctement.
Suis-je tebé parce qu'en fait le débuggeur n'affiche que la première case du tableau? Ou alors il y a un vrai problème?
Illustration en capture du debuggeur.
Merci.
Partager