dlopen échoue avec le fichier introuvable lorsque le fichier est dans le bon chemin
Question
J'ai une bibliothèque construite en utilisant libtool qui est dans le répertoire d'installation de bibliothèque, de /usr/local/lib/myprog/libmylib.so
du paquet. Je charger dynamiquement la bibliothèque dans mon code avec libltdl. Lorsque je tente de charger cette bibliothèque sur une machine, il fonctionne très bien. Sur un autre, avec la même construction et la bibliothèque installée sur le même emplacement, je reçois une erreur « fichier introuvable ».
Si je l'appelle directement lt_dlforeachfile
avant lt_dlopenext
(que j'utilise pour charger la bibliothèque), alors je peux voir en imprimant les noms de fichiers que la bibliothèque que j'ai besoin a été trouvé dans le chemin de recherche. Mais immédiatement après, le chargement échoue avec une erreur « fichier introuvable ». Toutes les suggestions?
UPDATE
Je l'ai essayé de passer à l'aide dlopen
et en spécifiant explicitement le chemin absolu à la bibliothèque. Cela fonctionne encore sur certains systèmes et non pas sur l'autre.
La solution
Il est avéré que libltdl se cachait l'erreur réelle. le « fichier introuvable » était d'une autre bibliothèque que la bibliothèque que je chargeais dépendait. J'ai découvert ce lors de l'utilisation dlerror()
pour imprimer les messages d'erreur. Après avoir installé la bibliothèque manquante, tout va bien!