dlopen échoue avec le fichier introuvable lorsque le fichier est dans le bon chemin

StackOverflow https://stackoverflow.com/questions/3937369

  •  30-09-2019
  •  | 
  •  

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.

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top