Я пытаюсь использовать ACE_Service_Object или ACE_Shared_Object. Я не уверен, какой из них применим. Я пытаюсь инкапсулировать некоторые функции в DLL, чтобы потребитель DLL открывал библиотеку, создавал экземпляр экспортируемого класса, вызывал некоторые функции в классе и затем уничтожал класс. Базовая архитектура плагинов. Что было бы лучшим способом сделать это с помощью классов ACE. Похоже, они оборачивают много мелочей загрузки, поиска и выгрузки DLL, которые было бы неплохо использовать.
Приведенный ниже код в основном то, что я хочу имитировать с помощью классов 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 );