Heim >Backend-Entwicklung >C++ >Wie kann ich dynamische gemeinsam genutzte C-Klassenbibliotheken unter Linux erstellen und verwenden?
Dynamische gemeinsam genutzte C-Klassenbibliotheken unter Linux
Einführung
Erstellen und Verwenden gemeinsam genutzter Klassenbibliotheken in C auf Linux kann eine herausfordernde Aufgabe sein. Dieser Artikel bietet eine umfassende Anleitung, die den Prozess der Erstellung und Verwendung gemeinsam genutzter C-Klassenbibliotheken abdeckt, einschließlich der Erstellung, Änderung und Zerstörung von Objekten.
Erstellen einer gemeinsam genutzten C-Klassenbibliothek
An Führen Sie zum Erstellen einer gemeinsam genutzten C-Klassenbibliothek die folgenden Schritte aus:
Verwenden einer gemeinsam genutzten C-Klassenbibliothek
Um eine erstellte gemeinsam genutzte C-Klassenbibliothek zu verwenden, befolgen Sie diese Schritte:
Beispielimplementierung
Der folgende Code Snippets demonstrieren eine einfache gemeinsam genutzte C-Bibliothek (myclass.h, myclass.cc) und ein C-Programm (class_user.cc), das die verwendet Bibliothek:
myclass.h:
class MyClass { public: MyClass(); virtual void DoSomething(); private: int x; };
myclass.cc:
extern "C" MyClass* create_object() { return new MyClass; } extern "C" void destroy_object(MyClass* object) { delete object; } MyClass::MyClass() { x = 20; } void MyClass::DoSomething() { cout << x << endl; }
class_user .cc:
MyClass* (*create)(); void (*destroy)(MyClass*); create = (MyClass* (*)())dlsym(handle, "create_object"); destroy = (void (*)(MyClass*))dlsym(handle, "destroy_object"); MyClass* myClass = (MyClass*)create(); myClass->DoSomething(); destroy(myClass);
Zusammenstellung (Linux):
g++ -fPIC -shared myclass.cc -o myclass.so g++ class_user.cc -ldl -o class_user
Indem Sie diese Schritte befolgen, können Sie erfolgreich dynamische gemeinsam genutzte C-Klassenbibliotheken unter Linux erstellen und verwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische gemeinsam genutzte C-Klassenbibliotheken unter Linux erstellen und verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!