質問

私はACE_Service_ObjectまたはACE_Shared_Objectを使用しようとしています。私は1つが適用されるか分かりません。私は、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