Was ist eine Dynamic Link Library?

Dynamic Link Library (DLLs): Kleine Programme zur Erweiterung von größeren Programmen für spezifische Aufgaben. Entdecken Sie jetzt!

31 jul 2023

Was ist eine Dynamic Link Library?
Was ist eine Dynamic Link Library?
Was ist eine Dynamic Link Library?

Haben Sie jemals ein Programm gestartet und eine dieser Meldungen gesehen? "Dynamic Link Library nicht gefunden" "Fehler 404 DLL" Nun, willkommen im Club.

Was ist eine DLL? werden Sie sich vielleicht fragen. Im Grunde sind es dynamische Links, die Ihr Computer benötigt, um ein Programm auszuführen oder ein externes Gerät zu verwenden.

Die Lösung ist einfach: Laden Sie es herunter. Aber wussten Sie, dass mit einer gefälschten DLL auch Malware in Ihren Computer eingeschleust werden kann?

Keine Sorge, wir erklären Ihnen alles über dynamische Link-Bibliotheken und die möglichen Fehler, auf die Sie bei ihnen stoßen können, sowie mögliche Lösungen. 

Lesen Sie weiter:

Was ist eine Dynamic Link Library (DLL)?

Eine Dynamic Link Library (DLL) ist eine Sammlung kleiner Programme, in die größere Programme bei Bedarf geladen werden können, um bestimmte Aufgaben zu erfüllen. 

Das kleine Programm, eine so genannte DLL-Datei, enthält Anweisungen, die dem größeren Programm bei der Bewältigung von Aufgaben helfen, die nicht zu den Kernfunktionen des ursprünglichen Programms gehören, wodurch der gesamte Ausführungsprozess rationalisiert wird.

Ein Beispiel für eine solche Aufgabe ist die Kommunikation mit einem bestimmten Gerät, z. B. einem Drucker oder Scanner, um das Senden und Empfangen eines Dokuments zu verarbeiten. DLL-Dateien, die gerätespezifische Vorgänge unterstützen, werden als Gerätetreiber bezeichnet.

DLLs enthalten Code und Daten, wie z. B. Klassen und Variablen, oder andere Ressourcen, wie z. B. Bilder, die von einem größeren Programm verwendet werden können.

"Dynamic Link Library" ist nicht nur ein allgemeiner Begriff für Dynamic Link Library, sondern auch der Name von Microsofts Version des Shared-Library-Konzepts für Windows. 

Es ist zu beachten, dass eine Shared Library auf jedem Betriebssystem (OS) existieren kann.

Wie funktioniert eine Dynamic Link Library?

Computerprogramme werden selten in einer einzigen Datei geschrieben. Sie bestehen oft aus mehreren Dateien, die miteinander verknüpft sind, wie eine Gruppe von Freunden, die am Ende des Klassenzimmers sitzt.

Wenn ein Programm ausgeführt werden soll, muss es aus seinem Quellcode kompiliert werden, d. h. aus dem für Menschen lesbaren Code, den der Programmierer während der Entwicklung des gesamten Abschnitts geschrieben hat. 

Daraus wird eine ausführbare Datei, d. h. ein Binärcode oder Maschinencode, den der Computer lesen kann, um die ihm zugewiesenen Aufgaben auszuführen, wie z. B. das Drucken eines Dokuments, das wir vorhin beschrieben haben.

Der Computer durchläuft mehrere Zwischenschritte, um dies zu ermöglichen, und zwar in Sekundenschnelle und ohne dass wir es bemerken. 

Während dieser Schritte werden mehrere Dateien miteinander verknüpft. Es gibt zwei Arten von Verknüpfungen, statische und dynamische, und zwei Arten von entsprechenden Link-Bibliotheken für jede:

  • Statische Links: werden zu einem früheren Zeitpunkt des Prozesses verknüpft und sind in die ausführbare Datei eingebettet. Statische Bibliotheken werden mit der ausführbaren Datei verknüpft, wenn das Programm kompiliert wird. Dynamische Bibliotheken werden später verknüpft, entweder zur Laufzeit oder zur Ladezeit. Statische Bibliotheken werden nicht von mehreren Programmen gemeinsam genutzt, da sie in die einzelne ausführbare Datei geschrieben werden.

  • Dynamische Links: DLLs enthalten die Dateien, mit denen ein Programm verknüpft wird. Die Bibliotheken sind bereits auf dem Computer gespeichert, außerhalb des Programms, das der Benutzer schreibt. Sie werden als dynamisch bezeichnet, weil sie nicht in die ausführbare Datei eingebettet sind, sondern bei Bedarf einfach mit ihr verknüpft werden.

Eine Importbibliothek, die eine Art statische Bibliothek ist, ersetzt alle Platzhaltersymbole durch tatsächliche Links zu den DLL-Daten, die im Hauptprogramm zur Ladezeit benötigt werden, und extrahiert diese Funktionen aus der DLL-Bibliothek. 

Die Programme geben den Namen der Bibliothek an, und das Betriebssystem erstellt einen Pfad zu der verlinkten Bibliothek, was den gesamten Prozess erleichtert. 

Verschiedene Programme haben ihre eigenen sprachspezifischen Aufrufkonventionen für die Verknüpfung mit DLL-Dateien.

Da dynamische Bibliotheken nicht in die ausführbare Datei geschrieben werden, können mehrere Programme gleichzeitig dieselbe Shared Library verwenden. Sie können auch geändert werden, ohne dass das gesamte Programm, das sie verwendet, geändert wird.

Welche Vorteile bieten dynamische Verknüpfungen?

Ganz allgemein kann man sagen, dass sie die Prozesse sind, durch die Programme verschiedene Aufgaben erhalten und ausführen, aber aus der Sicht des Programmierers und Entwicklers bieten sie 3 wesentliche Vorteile:

1. Es gibt weniger Ausfälle

Das Auftreten von Laufzeitproblemen ist weniger wahrscheinlich, da die DLL nicht wiederholt von der Festplatte geholt wird, was die potenziellen Ausfälle, die sonst auftreten, minimiert.

Mehrere Prozesse können gleichzeitig dieselbe Seite des Arbeitsspeichers nutzen, was die Möglichkeit von Fehlern beim Auslagerungsprozess ausschließt und eine bessere Reaktionsgeschwindigkeit für die Benutzerfreundlichkeit bietet.

2. Verbesserte Speichereffizienz

DLLs tragen dazu bei, dass Betriebssysteme und Programme schneller laufen, den Speicher effizienter nutzen und weniger Festplattenspeicherplatz benötigen, was sie zu einer hervorragenden Wahl für die Aufnahme in fast jedes Betriebssystem macht.

Es wird Speicherplatz gespart, da die Dateien nicht zusammen mit dem Hauptprogramm geladen werden. Wenn Sie zum Beispiel ein Dokument in Microsoft Word bearbeiten, ist es nicht notwendig, die Drucker-DLL-Datei in den Speicher zu laden. 

Wenn Sie nun beschließen, das Dokument zu drucken, ruft die Word-Anwendung die Drucker-DLL-Datei auf, um sie zu laden. Fazit? Sie haben ein höheres Tempo bei der Ausführung dieser Aufgaben.

DLLs werden nur einmal in den Speicher geladen. Beim statischen Linking müssen Systembibliotheken in jedes Programm geladen werden, was bedeutet, dass jeder Prozess seine eigene Kopie derselben Bibliothek hat. Ergebnis? Es wird unnötig Speicherplatz verbraucht.

3. Sie haben eine modulare Architektur

DLLs sind Teil einer modularen Architektur, die es ermöglicht, ein Programm auf modulare Weise zu liefern. Ein Entwickler muss nicht die gesamte Anwendung als eine ausführbare Datei installieren. 

Stattdessen können Sie als Entwickler bestimmte Bibliotheken und Komponenten austauschen, ohne die gesamte Anwendung zu ändern oder neu zu schreiben. Dies ist bei der Arbeit mit anderen Programmen oder bei der Aktualisierung von Anwendungen möglich.

Was sind die Nachteile und Herausforderungen dieser Art der dynamischen Verknüpfung?

Wer sagt, dass das alles gut ist? DLLs haben auch ihre Nachteile, wenn es um die Entwicklung und Ausführung geht, also sollten wir sie uns ansehen.

1. Nicht ohne Bugs

Einige ausführbare Dateien erfordern das Vorhandensein bestimmter DLLs, bevor sie ausgeführt werden können. Wenn die DLL nicht gefunden wird, kann eine Fehlermeldung erscheinen, die den Benutzer darauf hinweist, dass die Anwendung nicht gestartet werden kann. 

Das Problem nicht funktionierender Abhängigkeiten in DLLs und gemeinsam genutzten Bibliotheken wird manchmal auch als "Dependency Hell" bezeichnet. Darüber hinaus können Probleme auftreten, wenn Sie versuchen, DLLs auf Ihrem Computer zu aktualisieren.

2. Sicherheitsschwachstellen

DLL-Hijacking, auch bekannt als DLL-Injektion, ist ein häufiger Fehler in Windows-Anwendungen, der die Reihenfolge ausnutzt, in der die DLL geladen wird. 

Ein Bedrohungsakteur kann eine bösartige .dll-Datei in den Pfad einfügen, in dem das Laden einer legitimen .dll-Datei erwartet wird. Kurz gesagt: Malware.

Dies könnte dazu führen, dass die Hauptanwendung die bösartige DLL-Datei mit der ausführbaren Datei lädt. Dazu muss der Hacker wissen, welche .dll-Dateien eine ausführbare Datei aufrufen sollen, und dann der bösartigen Datei denselben Dateinamen geben wie der legitimen Datei, die sie ersetzt.

Die infizierte .dll-Datei kann Malware auf das laufende Gerät übertragen oder das Gerät anfällig für andere Malware machen. Der SolarWinds-Hack von 2020 beispielsweise nutzte DLL-Injection, um eine Hintertür in die Orion-Plattform des Unternehmens zu schaffen.

3. Die Geschwindigkeit ist beeinträchtigt

Das dynamische Binden ist langsamer als das statische Binden. Da das dynamische Binden zur Laufzeit oder zum Ladezeitpunkt erfolgt, erfordert es mehr CPU-Zyklen als das Laden zur Kompilierzeit. 

Allerdings ist das Betriebssystem eines Systems mit dynamischer Bindung schneller, da es die meiste Zeit weniger Ressourcen benötigt.

Die häufigsten Gründe für DLL-Fehler

DLL-Fehler sind aufgrund der Menge an DLL-Dateien, die auf Microsoft Windows-Systemen zu finden sind, und der Häufigkeit, mit der sie verwendet werden, häufig. Fehler treten auf, wenn eine Anwendung eine Datei nicht findet und ohne sie nicht ausgeführt werden kann.

Häufige Gründe für DLL-Fehler sind:

  • Malware.

  • Beschädigung der Datei.

  • Gelöschte Datei.

Ein erneutes Herunterladen der DLL-Datei ist eine Möglichkeit, ein Problem zu beheben. Dies kann jedoch den Speicher überlasten und eine doppelte Datei erstellen, wenn sich das Original noch auf dem Betriebssystem Ihres Geräts befindet.

Lösungen für mögliche DLL-Fehler

Eine bessere Lösung für das Problem verlorener oder nicht erkannter DLLs besteht darin, einige grundlegende Wartungsaufgaben durchzuführen. Sie können den Computer oder Laptop neu starten und den Papierkorb überprüfen, um festzustellen, ob die Datei versehentlich gelöscht wurde. 

Wenn die Datei gelöscht wurde, sich aber nicht im Papierkorb befindet, können die Benutzer ein Dateiwiederherstellungsprogramm ausprobieren, da dies ein sicherer Weg ist, wenn Sie die DLLs nicht herunterladen möchten.

Der Fehler einer fehlenden DLL kann ein Anzeichen für einen Computervirus sein, sodass ein Malware-Scan Ihres Computers erforderlich sein kann. Führen Sie dazu einfach ein beliebiges Antivirenprogramm aus.

Sie haben die Möglichkeit, eine Systemwiederherstellung von einer früheren Sicherung durchzuführen, um das Problem zu lösen, indem Sie das Betriebssystem des Computers in den Zustand vor der Beschädigung der DLL-Datei zurückversetzen.

Microsoft bietet auch mehrere Tools zur DLL-Fehlerbehebung an, wie z. B:

  • Dependency Walker: ein kostenloses Dienstprogramm, das alle von einem Programm verwendeten DLLs dokumentiert und auf zirkuläre Abhängigkeiten und die Gültigkeit von DLL-Dateien überprüft.

  • DLL Universal Problem Solve: ist ein Audit-Tool mit mehreren Hilfsprogrammen. Das Tool lädt zum Beispiel zwei DLL-Dateien nebeneinander in ihre eigenen Textdateien und erstellt eine dritte Textdatei, die die Unterschiede zwischen den beiden Dateien enthält.

  • DLL-Hilfedatenbank: hilft dem Benutzer bei der Identifizierung der verschiedenen DLL-Typen.

Sind Sie bereit, Ihre dll-Fehler zu beheben?

Man muss kein Computerexperte sein, um sich zu trauen, seinen Computer von Zeit zu Zeit zu überprüfen, vor allem, wenn man ihn für die Arbeit nutzt.

Es wird Sie nichts kosten, außerdem haben wir Ihnen alle Werkzeuge dafür gegeben, aber jetzt haben wir eine Frage für Sie:

Hatten Sie diesen Fehler schon einmal? Jetzt, wo Sie wissen, wie Sie das Problem beheben können, werden Sie sich trauen, es selbst zu tun?