我正在尝试使用 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 );