Question

Je suis en train d'utiliser le ACE_Service_Object ou ACE_Shared_Object. Je ne suis pas sûr que l'on est applicable. Je suis en train de résumer certaines fonctionnalités dans une DLL si un consommateur de la DLL ouvrirait la bibliothèque, créer une instance de la classe exportée, appeler des fonctions de la classe, puis détruire la classe. Une architecture de plug-in de base de toutes sortes. Quelle serait la meilleure façon d'aller à ce sujet en utilisant les cours de l'ECA. Ils semblent envelopper beaucoup de la charge de DLL, la recherche et le déchargement minuties, ce qui serait agréable à utiliser.

Le code ci-dessous est essentiellement ce que je veux imiter en utilisant les classes de l'ECA.

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 );
Était-ce utile?

La solution

Si tout ce que vous avez besoin est de charger, décharger et appeler des fonctions dans une bibliothèque partagée, vous pouvez utiliser la classe au lieu ACE_DLL. C'est ce qui se termine ACE_Shared_Object à l'aide de sous les couvertures.

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