dlopen - symbole non défini erreur

Je suis l'aide de dlopen pour charger une bibliothèque partagée à l'exécution

dlopen("SharedLibarary1.so", RTLD_NOW | RTLD_GLOBAL);

Dans cet objet partagé je me réfère à un const char* défini dans une autre bibliothèque partagée "SharedLibarary2.".

L'Exécutable, et les deux bibliothèques sont construites à l'aide -rdynamic.

Mais j'ai toujours le temps d'exécution d'erreur lors de l'utilisation de dlopen: "/usr/lib/SharedLibarary1.so: undefined symbol" et les points à la déformation const char* est le symbole non défini.

Avec GDB "info" partager " je peux voir que la deuxième bibliothèque n'est pas chargée au moment de l'erreur.

Comment jamais ce problème disparaît si je fais un dlopen sur la deuxième bibliothèque avant que je le fais sur la première bibliothèque.

Est-il un meilleur moyen de forcer le chargeur pour charger la bibliothèque deuxième pour le symbole non?

oui. Ne pas faire de la bibliothèque vous chargez compter sur quelque chose qui ne sera lié par une autre bibliothèque qui vous permettra de charger à l'aide de dlopen(). L'utilisation d'un objet partagé qui est chargé de la façon habituelle qui a ce symbole. N'utilisant RTLD_LAZY d'aide par le chemin?

OriginalL'auteur Sak | 2012-10-19

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *