Recevoir des “undefined symbol” erreur lors du chargement de la bibliothèque avec dlopen

Je suis en train d'écrire un peu de code qui utilise la dynamique des bibliothèques partagées sous forme de plugins.

Ma ligne de commande pour la construction de bibliothèques partagées ressemble:

cc -shared -fPIC -o module.so -g -Wall module.c

Dans le module, je peux appeler des fonctions qui sont dans aucune autre bibliothèque partagée qui a été chargé au sein de l'exécutable principal.

Cependant je ne peux pas accéder (exporté) les fonctions qui sont dans l'exécutable lui-même (j'ai undefined symbol erreurs).

Mon appel à dlopen ressemble à ceci:

void *handle = dlopen(plugin, RTLD_NOW);

Quelqu'un peut veuillez en aviser comment mon module peut appeler à mon exécutable, sans avoir à mettre l'ensemble de l'exécutable de l'utilitaire de fonctions dans une autre bibliothèque partagée?

InformationsquelleAutor Alnitak | 2009-01-26