Erstellen und Verwenden dynamischer gemeinsam genutzter C-Klassenbibliotheken unter Linux
Erstellen einer gemeinsam genutzten Klassenbibliothek
Um eine gemeinsam genutzte C-Klassenbibliothek zu erstellen, können Sie folgen Diese Schritte:
- Definieren Sie die Header-Datei .h und deklarieren Sie die Klasse und ihre Mitgliedsfunktionen. Denken Sie daran, virtuelle Memberfunktionen zu verwenden, um dynamische Verknüpfungen zu ermöglichen.
- Implementieren Sie die Klasse in einer separaten Quelldatei, .cc, einschließlich der Header-Datei.
- Definieren Sie externe C-Funktionen für die Objekterstellung (create_object) und Zerstörung (destroy_object).
- Verwenden Sie #include, um die Header-Datei einzubinden und den Namespace std; um den Standard-Namespace zu verwenden.
- Kompilieren Sie die Bibliothek mit g -fPIC -shared unter Linux oder g -dynamiclib -flat_namespace unter Mac OS X und generieren Sie eine gemeinsame Objektdatei (.so).
Verwenden von gemeinsam genutzten Klassenbibliotheken
Um gemeinsam genutzte Klassenbibliotheken separat zu verwenden ausführbare Datei:
- Fügen Sie die erforderlichen Header-Dateien ein.
- Laden Sie die gemeinsam genutzte Bibliothek mit dlopen.
- Verwenden Sie dlsym, um Funktionszeiger für create_object und destroy_object abzurufen.
- Erstellen Sie eine Instanz der Klasse mit create_object.
- Member-Funktionen für die Instanz aufrufen.
- Zerstören Sie die Instanz mit destroy_object.
- Schließen Sie die gemeinsam genutzte Bibliothek mit dlclose.
Zusätzlich Tipps für Plugin-Systeme
Leiten Sie für ein Plugin-System Ihre Klassen von einer Basisklasse ab und machen Sie alles erforderlich Funktionen virtuell. Plugin-Autoren können die Virtuals überschreiben und die Funktionen create_object und destroy_object implementieren. Auf diese Weise bleibt Ihre Hauptanwendung unverändert.
Das obige ist der detaillierte Inhalt vonWie erstelle und verwende ich dynamische gemeinsam genutzte C-Klassenbibliotheken unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn