J'essaie d'utiliser ACE_Service_Object ou ACE_Shared_Object. Je ne suis pas sûr de savoir lequel est applicable. J'essaye d'encapsuler une certaine fonctionnalité dans une DLL ainsi un consommateur de la DLL ouvrirait la bibliothèque, créerait une instance de la classe exportée, appellerait quelques fonctions sur la classe, et détruirait alors la classe. Une architecture de plug-in de base de toutes sortes. Quel serait le meilleur moyen d'y parvenir en utilisant les classes ACE. Ils semblent emballer beaucoup de chargement de la DLL, recherche & minutia de déchargement, ce qui serait agréable à utiliser.Utilisation de ACE_Service_Object
Le code ci-dessous est fondamentalement ce que je veux imiter en utilisant les classes ACE.
void* handle = dlopen("./libdllbaseclass.so", RTLD_LAZY);
DllBaseClass* (*create)();
void (*destroy)(DllBaseClass*);
create = (DllBaseClass* (*)())dlsym(handle, "create_object");
destroy = (void (*)(DllBaseClass*))dlsym(handle, "destroy_object");
DllBaseClass* myClass = (DllBaseClass*)create();
myClass->DoSomething();
destroy(myClass);
Voici le lien vers la conversation par e-mail sur la liste des utilisateurs d'ACE où j'ai également posé cette question. http://groups.google.com/group/comp.soft-sys.ace/browse_thread/thread/f8b5abecb3f216e6?pli=1&utoken=1_l8ujQAAADOucmN4oZYfOFx6aRSU9AumAK6R-0U9m9OvSe8m7knAN-kGJXhO8YlYHlXvigQWoXxnRIF9Cpdb4bb5YrWEuAf –