Heim  >  Artikel  >  Backend-Entwicklung  >  Hier sind einige Titeloptionen, die das Frageformat und den Inhalt des Artikels berücksichtigen: **Kurz & Direkt:** * **Wie exportiere und lade ich C-Klassen dynamisch aus einer DLL?** * **Spät-

Hier sind einige Titeloptionen, die das Frageformat und den Inhalt des Artikels berücksichtigen: **Kurz & Direkt:** * **Wie exportiere und lade ich C-Klassen dynamisch aus einer DLL?** * **Spät-

Susan Sarandon
Susan SarandonOriginal
2024-10-26 12:25:02617Durchsuche

Here are a few title options, taking into account the question format and the article's content:

**Short & Direct:**

* **How Do I Export and Dynamically Load C   Classes from a DLL?**
* **Late-Binding with C   Classes in DLLs: What Are the Options?**

Exportieren einer C-Klasse aus einer DLL: Überlegungen zur späten Bindung

Beim Exportieren von Funktionen aus einer DLL wird häufig die Direktive __declspec(dllexport) verwendet. Aber wie exportieren und laden wir ganze C-Klassen dynamisch?

Late-Binding über LoadLibrary()

Das direkte Laden einer Klasse mit LoadLibrary() ist normalerweise nicht möglich. Stattdessen stehen zwei Ansätze für die dynamische Verknüpfung mit einer Klasse zur Verfügung:

Ansatz 1: Factory-Funktion und Assembler

Erstellen Sie eine Factory-Funktion, um Objekte zu instanziieren, und verwenden Sie Assembler, um sie anschließend mit den Offsets der DLL zu verknüpfen Laden der DLL dynamisch. Dieser Ansatz wird hier ausführlich erläutert: [C-Objekte dynamisch aus DLLs laden](https://www.codeproject.com/Articles/18878/Dynamically-loading-objects-from-DLLs).

Ansatz 2 : Verzögerungslade-DLL

Verwenden Sie eine Verzögerungslade-DLL, die das dynamische Laden einer DLL und ihrer Exporte zur Laufzeit ermöglicht. Allerdings ist diese Methode möglicherweise nicht auf allen Plattformen verfügbar.

Verknüpfung zur Kompilierungszeit mit Header und Lib

Für die Verknüpfung zur Kompilierzeit können Sie entweder:

  • Lassen Sie den Linker damit umgehen, indem er das exportierte Klassensymbol einschließt und mit der entsprechenden Importbibliothek verknüpft.
  • Verwenden Sie Präprozessormakros, um das Exportverhalten explizit zu steuern. Dies wird häufig beim Erstellen von DLLs mit exportierten Symbolen verwendet. Visual Studio generiert diese Makros automatisch, wenn DLLs mit aktivierter Option „Symbole exportieren“ erstellt werden.

Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die das Frageformat und den Inhalt des Artikels berücksichtigen: **Kurz & Direkt:** * **Wie exportiere und lade ich C-Klassen dynamisch aus einer DLL?** * **Spät-. 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