Heim >Backend-Entwicklung >C++ >Wie erstelle und verwende ich eine dynamische C-Shared-Bibliothek unter Linux?

Wie erstelle und verwende ich eine dynamische C-Shared-Bibliothek unter Linux?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-08 02:39:14222Durchsuche

How to Create and Use a C   Dynamic Shared Library on Linux?

C Dynamic Shared Library unter Linux

Dynamic Shared Libraries (DSLs), auch als Shared Libraries oder Shared Objects bekannt, bieten die Möglichkeit, Code in wiederverwendbare Module zu unterteilen C-Programmierung. Dies ermöglicht die gemeinsame Nutzung von Code zwischen mehreren Programmen, reduziert die Codeduplizierung und ermöglicht eine einfachere Wartung.

Erstellen einer gemeinsam genutzten Klassenbibliothek

In C umfasst das Erstellen einer gemeinsam genutzten Klassenbibliothek Definieren einer Header-Datei (.h) und einer Quelldatei (.cc) für die Klassenimplementierung. Die Header-Datei sollte die Klassenschnittstelle deklarieren, während die Quelldatei die Implementierung bereitstellt. So erstellen Sie eine gemeinsam genutzte Bibliothek mit diesen Dateien:

#include "myclass.h"</p>
<h1>include <iostream></h1>
<p>using namespace std;</p> <p>MyClass::MyClass()<br>{<br> x = 20;<br>}</p>
<p>void MyClass::DoSomething()<br>{<br> cout << x << endl;<br>}

Externe Verknüpfung

Mithilfe von Symbolen, denen das externe „C“ vorangestellt ist, weist die externe Verknüpfung den Compiler an, Funktionen verfügbar zu machen zur Außenwelt. Dies ist erforderlich, wenn Funktionen aus der gemeinsam genutzten Bibliothek in anderen Programmen aufgerufen werden.

Verwenden der gemeinsam genutzten Bibliothek

Um die gemeinsam genutzte Klassenbibliothek in einer separaten ausführbaren Datei zu nutzen, befolgen Sie diese Schritte :

  1. Laden der Bibliothek: Verwenden Sie dlopen, um die gemeinsam genutzte Bibliothek zu laden Speicher.
  2. Funktionsadressen abrufen: Verwenden Sie dlsym, um die Adressen der Funktionen create_object und destroy_object abzurufen.
  3. Erstellen eines Objekts: Rufen Sie die Funktion create_object auf ein Objekt des instanziieren Klasse.
  4. Verwenden des Objekts: Rufen Sie Mitgliedsfunktionen wie DoSomething für das erstellte Objekt auf.
  5. Zerstören des Objekts: Rufen Sie abschließend die auf destroy_object-Funktion zum Aufheben der Zuordnung des Objekts.

Beispiel Verwendung

Der folgende Codeausschnitt veranschaulicht die Verwendung einer gemeinsam genutzten Klassenbibliothek:

#include <dlfcn.h></p>
<h1>include < iostream></h1>
<h1>include "myclass.h"</h1>
<p>using namespace std;</p>
<p>int main(int argc, char **argv) {<br> MyClass<em> myClass = (MyClass</em>)create( );<br> myClass->DoSomething();<br> destroy( myClass );<br>}

Kompilierung

Für Mac OS X:

g++ -dynamiclib -flat_namespace myclass.cc -o myclass.so
g++ class_user.cc -o class_user

Für Linux:

g++ -fPIC -shared myclass.cc -o myclass.so
g++ class_user.cc -ldl -o class_user

Durch die Verwendung gemeinsam genutzter Bibliotheken können Entwickler die Wiederverwendbarkeit, Wartung und Skalierbarkeit ihres Codes in der C-Programmierung verbessern. Dynamische Verknüpfung ermöglicht die gemeinsame Nutzung von Code zwischen Programmen, optimiert die Speichernutzung und verbessert die Gesamtleistung von Softwaresystemen.

Das obige ist der detaillierte Inhalt vonWie erstelle und verwende ich eine dynamische C-Shared-Bibliothek 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