Configuration de VC++ pour utiliser le JNI

Résolu
cs_cze Messages postés 13 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005 - 12 déc. 2005 à 16:08
cs_cze Messages postés 13 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005 - 13 déc. 2005 à 10:32
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 déc. 2005 à 00:17
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++
3
cs_cze Messages postés 13 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 13 décembre 2005
13 déc. 2005 à 10:32
en fait je n'avais pas placé la lib dans les fichiers de ressources.

Merci pour ton aide.
0
Rejoignez-nous