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 );