Bonjour,
Cela fait pas mal de temps que je planche sur le problème JNI qui suit et j’ai épuisé mes idées et celles que j’ai trouvées sur le net.
Je développe un programme en Java qui, grâce une classe Personnalisation, interroge la base de registre Windows via JNI. Le Programme s’exécute normalement sous ma plateforme de développement (sous Windows Xp).
Voici la déclaration des fonctions du .h généré avec javah:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class ap_Personnalisation */ #ifndef _Included_ap_Personnalisation #define _Included_ap_Personnalisation #ifdef __cplusplus extern "C" { #endif /* * Class: ap_Personnalisation * Method: TrouverComptes * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_ap_Personnalisation_TrouverComptes (JNIEnv *, jclass, jstring); /* * Class: ap_Personnalisation * Method: ModifierCompte * Signature: (Ljava/lang/String;Ljava/lang/String;II)I */ JNIEXPORT jint JNICALL Java_ap_Personnalisation_ModifierCompte (JNIEnv *, jclass, jstring, jstring, jint, jint); /* * Class: ap_Personnalisation * Method: TrouverClientPardefaut * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_ap_Personnalisation_TrouverClientPardefaut (JNIEnv *, jclass); /* * Class: ms_common_Personnalisation * Method: TrouverClientsPresents * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_ap_Personnalisation_TrouverClientsPresents (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif
Malheureusement, quand je veux l’exécuter sous Windows98, j’obtiens l’erreur suivante :
UnsatisfiedLinkError TrouverComptes
A noter que :
- les fonctions TrouverClientPardefaut et TrouverClientsPresents sont appelées avant TrouverComptes et elles marchent nickel
- le code de cette dll fonctionne sous l’os car je l’ai testé sous forme d’un .exe
- j’ai bien vérifié TOUTES les syntaxes
- j’ai changé les paramètres jstring en jchararray sans succès
- ModifierComptes pose le même pbm
- j’ai testé TrouverCompte sans paramètre jstring et cela ne marche pas non plus
- j’ai bidouillé l’ordre des fonctions …
Voilà, j’espère que mon explication du pbm est assez explicite. Si quelqu’un a une idée, merci de bien vouloir me la communiquer. Cela m'aiderait beaucoup.
Partager