سؤال

أحاول استخدام ACE_SERVICE_OBJECS أو ACE_SHARED_OBJECE. لست متأكدا من هو واحد ينطبق. أحاول تثبيت بعض الوظائف في 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_OBJECS باستخدام الأغطية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top