我试图使用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 );
有帮助吗?

解决方案

如果你需要的是加载,卸载,并调用一些功能的共享库中,你可以使用ACE_DLL类代替。这就是ACE_Shared_Object最终用被子下。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top