ace_service_object 사용
문제
ace_service_object 또는 ace_shared_object를 사용하려고합니다. 어떤 것이 적용되는지 잘 모르겠습니다. DLL의 일부 기능을 캡슐화하려고 노력하므로 DLL의 소비자가 라이브러리를 열고 내보내는 클래스의 인스턴스를 만들고 클래스의 일부 기능을 호출 한 다음 클래스를 파괴 할 수 있습니다. 종류의 기본 플러그인 아키텍처. ACE 클래스를 사용하여 이것에 대해 가장 좋은 방법은 무엇입니까? 그들은 많은 DLL 로딩, 조회 및 언로드 Minutia를 감싸는 것처럼 보이며, 사용하기에 좋을 것입니다.
아래 코드는 기본적으로 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가 커버 아래에 사용됩니다.
제휴하지 않습니다 StackOverflow