Résolution d'UnsatisfiedLinkError dans les projets JNI : bibliothèques dépendantes manquantes
Dans un projet JNI, une UnsatisfiedLinkError avec le message "Impossible de trouver les bibliothèques dépendantes " peut survenir lorsqu'une bibliothèque personnalisée, telle que mylib.dll, s'appuie sur une bibliothèque tierce (par exemple, libsndfile-1.dll) qui n'est pas disponible dans le chemin de recherche du système. Pour résoudre ce problème, plusieurs étapes clés doivent être suivies :
-
Assurez-vous du placement correct de la DLL : Placez à la fois la DLL personnalisée (mylib.dll) et la dépendance requise (libsndfile- 1.dll) dans le même répertoire que le fichier JAR de l'application Java.
-
Vérifier la fonction DLL Naming : Vérifiez que les noms de fonctions dans la DLL personnalisée correspondent exactement à ceux définis dans le fichier d'en-tête JNI. Si nécessaire, ajustez les indicateurs de l'éditeur de liens dans le processus de construction pour garantir un nommage correct de la méthode.
-
Prenez en compte le comportement spécifique à Windows : Sous Windows, si la propriété système java.library.path n'est pas explicitement défini, la DLL doit résider dans le répertoire de travail actuel ou dans un répertoire inclus dans l'environnement Windows PATH variable.
Conseils de dépannage supplémentaires :
-
Vérifiez les avertissements de Dependency Walker : Même si Dependency Walker affiche des importations non résolues pour MPR .DLL et SHLWAPI.DLL, ces avertissements peuvent souvent être ignorés, comme mentionné dans le DW FAQ.
-
Vérifier le chemin de recherche de la bibliothèque partagée : Utilisez la commande "java -XshowSettings:properties -version" (disponible dans Java 8 et versions ultérieures) pour afficher le chemin de recherche de la bibliothèque partagée et vérifiez que les DLL requises sont accessibles.
-
Éliminez les problèmes de chemin de classe : Le chemin de classe et le chemin de recherche de la bibliothèque partagée sont distincts et sans rapport. Assurez-vous que tous les fichiers JAR requis sont correctement inclus dans le chemin de classe.
En suivant attentivement ces étapes, les développeurs peuvent résoudre les UnsatisfiedLinkErrors liées aux bibliothèques dépendantes manquantes dans les projets JNI, permettant ainsi à leurs applications de fonctionner correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!