Je travaille sur un projet Java qui utilise le JNI. Le JNI appelle une bibliothèque personnalisée que j'ai écrite moi-même, disons mylib.dll, et qui dépend d'une bibliothèque tierce, libsndfile-1.dll.
Lorsque je lance mon programme, il plante avec
java.lang.UnsatisfiedLinkError: C:\...chemin...\mylib.dll: Impossible de trouver les bibliothèques dépendantes.
J'ai cherché sur ce site (et d'autres) et j'ai essayé un certain nombre de solutions :
-
J'ai exécuté Dependency Walker. DW a donné quelques avertissements -- que deux bibliothèques requises par libsndfile, MPR.DLL et SHLWAPI.DLL, avaient des "imports non résolus" -- mais la FAQ de DW disait que ces avertissements pouvaient être ignorés en toute sécurité.
-
J'ai corrigé les noms de méthode dans mylib.dll, comme suggéré ici. Les noms de méthode avaient été malmenés par le compilateur, mais j'ai ajouté des drapeaux de liaison et les noms de méthode du dll correspondent maintenant exactement à ceux de mon fichier d'en-tête jni.
-
J'ai mis tous ces DLL dans le même répertoire -- le même répertoire que le .jar qui les appelle -- pour m'assurer qu'ils sont sur le bon CHEMIN.
Ça ne marche pas.
Est-ce que quelqu'un a une idée de ce qui se passe ?
Je développe dans Visual Studio 2010 sur un MacBook pro (via Parallels). Je fais mes tests sous Windows XP sur un ordinateur portable toshiba.