Configuration de VC++ pour utiliser le JNI [Résolu]

Signaler
Messages postés
13
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2005
-
Messages postés
13
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2005
-
Salut,

je suis en train d'essayer de faire fonctionner la machine virtuelle java (JVM) dans un programme C++ en utilisant la JNI (Java Native Interface).

Dans mon programme je commence par inclure le fichier "jni.h" qui contient les déclarations des fonctions utiles.
Ensuite, pour lancer la JVM, je dois utiliser la commande "JNI_CreateJavaVM(...);"

Et j'ai un probléme de linkage pendant la compilation. Visual Studio .NET 2003 me donne l'erreur suivante :

error LNK2001: symbole externe non résolu "long __stdcall JNI_CreateJavaVM(struct JavaVM_ * *,void * *,void *)" (?JNI_CreateJavaVM@@$$J212YGJPAPAUJavaVM_@@PAPAXPAX@Z)


J'ai bien déclaré la dll "jvm.dll" ("Java\jdk1.5.0_06\jre\bin\server") dans les variables d'environnement de mon programme.
Lorsque je regarde les fonctions qui y sont implémentées avec l'utilitaire "Dependency Walker", je trouve bien des traces de la fonction, mais sous la forme : "JNI_CreateJavaVM"

Dans mon programme, j'ai même tenté de définir la fonction en utilisant la ligne suivante :


__declspec(dllimport) jint __stdcall JNI_CreateJavaVM(JavaVM**, void**, void*);

mais il n'y a rien à faire, j'ai toujours le même problème de linkage à la compilation.

Quelqu'un pourrait-il m'aider, svp ?

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Ce n'est pas une question de path mais de lib qu'il faut fournir au linker. Si tu n'as pas la lib correspondant à une dll alors faudra obtenir les pointeurs de fonction par GetProcAddress.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
13
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2005

en fait je n'avais pas placé la lib dans les fichiers de ressources.

Merci pour ton aide.