Pergunta

Eu estou tentando usar o ACE_Service_Object ou o ACE_Shared_Object. Eu não tenho certeza qual é aplicável. Estou tentando encapsular algumas funcionalidades em uma DLL para um consumidor da DLL iria abrir a biblioteca, crie uma instância da classe exportado, chamar algumas funções na classe, e depois destruir a classe. A arquitetura plug-in do tipo básico. Qual seria a melhor maneira de fazer isto usando as classes ECA. Eles parecem envolver um monte do carregamento DLL, pesquisa e minúcia descarga, que seria bom para usar.

O código abaixo é basicamente o que eu quero imitar usando as classes 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 );
Foi útil?

Solução

Se tudo que você precisa é para carregar, descarregar e chamar algumas funções em uma biblioteca compartilhada, você pode usar a classe ACE_DLL vez. Isso é o que ACE_Shared_Object acaba usando debaixo das cobertas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top