Es wird empfohlen, Visual Studio 2017 zu verwenden

DLLs in Visual C++

 

Veröffentlicht: Juli 2016

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

Eine Dynamic Link Library (DLL) ist eine ausführbare Datei, die als eine gemeinsam genutzte Bibliothek von Funktionen und Ressourcen fungiert. Dynamisches Verknüpfen (Linken) ermöglicht es einer ausführbaren Datei, Funktionen aufzurufen oder Ressourcen zu verwenden, die in einer separaten Datei gespeichert sind. Diese Funktionen und Ressourcen können getrennt von den ausführbaren Dateien, von denen sie verwendet werden, kompiliert und bereitgestellt werden. Das Betriebssystem kann die jeweilige DLL in den Speicherbereich der ausführbaren Datei laden, wenn diese geladen wird, oder auf Anforderung zur Laufzeit laden. DLLs machen es außerdem einfach, Funktionen und Ressourcen in ausführbaren Dateien gemeinsam zu nutzen. Mehrere Anwendungen können gleichzeitig auf den Inhalt einer einzigen Kopie einer im Arbeitsspeicher enthaltenen DLL zugreifen.

Statisches Verknüpfen kopiert den gesamten Objektcode, der sich in einer LIB-Datei befindet, in eine ausführbare Datei. Dynamisches Verknüpfen bindet nur die Informationen ein, die zur Laufzeit benötigt werden, um die DLL zu finden und zu laden, in der ein Datenelement oder eine Funktion enthalten ist. Wenn Sie eine DLL erstellen, erstellen Sie auch eine LIB-Datei, die diese Informationen enthält. Wenn Sie eine ausführbare Datei erstellen, die die DLL aufruft, verwendet der Linker die exportierten Symbole in der LIB-Datei, um diese Informationen für das Ladeprogramm zu speichern. Wenn das Ladeprogramm eine DLL lädt, wird die DLL in den Speicherbereich Ihrer ausführbaren Datei eingebunden. In der DLL wird die spezielle Funktion DllMain aufgerufen, um die Initialisierung auszuführen, die die DLL benötigt.

Die dynamische Verknüpfung bietet gegenüber der statischen Verknüpfung verschiedene Vorteile. Wenn Sie DLLs verwenden, können Sie Speicherplatz sparen und Auslagerungsvorgänge (Swapping) verringern. Wenn mehrere Anwendungen eine einzige Kopie einer DLL verwenden können, können Sie Speicherplatz und Downloadbandbreite sparen. DLLs können getrennt bereitgestellt und aktualisiert werden, wodurch Sie Wartungsunterstützung und Softwareupdates bereitstellen können, ohne Ihren gesamten Code erneut erstellen zu müssen. DLLs bieten eine bequeme Möglichkeit, gebietsschemaspezifische Ressourcen bereitzustellen, die mehrsprachige Programme unterstützen können, und vereinfachen ein Erstellen von internationalen Versionen Ihrer Anwendungen.

Die folgenden Themen enthalten ausführliche Informationen dazu, wie DLLs programmiert werden.

Exemplarische Vorgehensweise: Erstellen und Verwenden einer Dynamic Link Library (C++)
Beschreibt, wie Sie mit Visual Studio eine DLL erstellen und verwenden.

Unterschiede zwischen Anwendungen und DLLs
Beschreibt die grundlegenden Unterschiede zwischen Anwendungen und DLLs.

Vorteile der Verwendung von DLLs
Beschreibt die Vorteile von dynamischen Verknüpfungen.

Arten von DLLs
Bietet Informationen zu den verschiedenen Arten von DLLs, die erstellt werden können.

Häufig gestellte Fragen (FAQs)zu DLLs
Bietet Antworten auf häufig gestellte Fragen zu DLLs.

Verknüpfen einer ausführbaren Datei mit einer DLL
Beschreibt das explizite und implizite Verknüpfen mit einer DLL.

Initialisieren einer DLL
Beschreibt den Initialisierungscode einer DLL (z. B. den zur Speicherbelegung), der beim Laden der DLL ausgeführt werden muss.

Verhalten der Laufzeitbibliothek
Beschreibt, wie die DLL-Startsequenz durch die Laufzeitbibliothek ausgeführt wird.

"LoadLibrary" und "AfxLoadLibrary"
Erörtert die Verwendung von LoadLibrary und AfxLoadLibrary zum expliziten Verknüpfen (Linken) einer DLL zur Laufzeit.

GetProcAddress
Erörtert die Verwendung von GetProcAddress, um die Adresse einer exportierten Funktion in der DLL abzurufen.

"FreeLibrary" und "AfxFreeLibrary"
Beschreibt die Verwendung von FreeLibrary und AfxFreeLibrary in Situationen, in denen das DLL-Modul nicht länger benötigt wird.

Von Windows verwendeter Suchpfad zum Auffinden einer DLL
Beschreibt den Suchpfad, der von Windows verwendet wird, um eine DLL im System zu finden.

Modulzustände einer regulären, dynamisch mit MFC verknüpften DLL
Beschreibt die Modulzustände einer regulären, dynamisch mit MFC verknüpften DLL.

Erweiterungs-DLLs
Erläutert DLLs, die typischerweise wiederverwendbare Klassen implementieren, welche von bestehenden Microsoft Foundation Class Library-Klassen abgeleitet wurden.

Erstellen einer DLL als reine Ressource
Erörtert eine reine Ressourcen-DLL, die ausschließlich Ressourcen enthält, z. B. Symbole, Bitmaps, Zeichenfolgen und Dialogfelder.

Lokalisierte Ressourcen in MFC-Anwendungen: Satelliten-DLLs
Bietet erweiterte Unterstützung für Satelliten-DLLs, ein Feature, das den Entwickler bei der Erstellung von Anwendungen unterstützt, die für mehrere Sprachen lokalisiert sind.

Importieren und Exportieren
Beschreibt das Importieren öffentlicher Symbole in eine Anwendung bzw. das Exportieren von Funktionen aus einer DLL.

Active Technology und DLLs
Bietet die Möglichkeit, Objektserver innerhalb einer DLL zu implementieren.

Automatisierung in einer DLL
Beschreibt, welche Features die Automatisierungsoption im MFC-DLL-Assistenten bereitstellt.

Namenskonventionen für MFC-DLLs
Erörtert, nach welcher strukturierten Namenskonvention die in MFC enthaltenen DLLs und Bibliotheken benannt sind.

Aufrufen von DLL-Funktionen aus Visual Basic-Anwendungen heraus
Beschreibt den Aufruf von DLL-Funktionen aus Visual Basic-Anwendungen.

Verwenden von MFC als Teil einer DLL
Beschreibt reguläre DLLs, über die Sie die MFC-Bibliothek als Bestandteil einer Windows-DLL (Dynamic Link Library) verwenden können.

DLL Version of MFC (nur auf Englisch verfügbar)
Beschreibt, wie die gemeinsam genutzten Dynamic Link Libraries MFCxx.dll und MFCxxD.dll (wobei x für die MFC-Versionsnummer steht) mit MFC-Anwendungen und Erweiterungs-DLLs verwendet werden können.

(NOTINBUILD)Visual C++ Programming Methodologies
Enthält Links zu Themen, die grundlegende Informationen über Visual C++-Bibliotheken bieten, sowie zu Themen, in denen unterschiedliche Codierungstechnologien und -verfahren erläutert werden.

Anzeigen: