Mon programme principal chargeriez une bibliothèque dynamique simple appelé hello.sopartage de données avec une bibliothèque dynamique chargé (dlopen, dlsym)
Dans principale
void* handle = dlopen("./hello.so", RTLD_LAZY);
Dans principale, passez une fonction de rappel appelée testing (définie quelque part dans main.h) et invoquez le hello() à partir de la bibliothèque dynamique
typedef void (*callback)();
typedef void (*hello_t)(callback);
/* do something */
hello_t hello = (hello_t) dlsym(handle, "hello");
hello(testing);
dans la bibliothèque dynamique,
#include
#include "main.h"
extern "C" void hello(void (*fn)()) {
/*do something and then invoke callback function from main */ fn();
}
Y at-il d'autres moyens pour permettre aux fonctions/données principal à appeler/utilisés de la bibliothèque dynamique en dehors de l'utilisation callbacks?
Merci beaucoup – user1492900
C'est parce que je voudrais activer l'utilisation du même logger (log4cxx) dans la bibliothèque principale et dynamique. – user1492900
Dans ce cas, un rappel est définitivement une façon de faire. –