Dies mag eine sehr noobie Frage sein, aber in der heutigen Welt der Web-App-Entwicklung müssen sich viele Programmierer nicht viel mit DLLs auseinandersetzen und machen sich daher nicht die Mühe, ihren Zweck kennenzulernen.
Was ist eine DLL?
- Was wird es verwendet?
- Wie funktioniert es?
- Wie erstellt man eine?
- In welchen Situationen ist es angemessen, eine zu erstellen?
Mir wurde gesagt, dass DLLs zum Speichern von Funktionsbibliotheken verwendet werden, aber darüber hinaus weiß ich nicht viel. Hoffentlich kann mich hier jemand aufklären, damit ich mich endlich nicht mehr fragen kann, was all diese DLL-Dateien in meinem Windows-Verzeichnis tun.
Antworten:
Eine DLL ist eine dynamische Linkbibliothek. Es ist eine Sammlung von Code und / oder Daten, die von mehreren Anwendungen (oder anderen Bibliotheken / Modulen) verwendet werden können.
So werden beispielsweise gängige Methoden zum Verarbeiten von Dateien, Arbeiten mit GUI-Komponenten usw. in Bibliotheken bereitgestellt, sodass mehrere Anwendungen möglicherweise dieselbe Funktionalität verwenden. Dies reduziert nicht nur die Notwendigkeit, dasselbe Material mehrmals zu erstellen, sondern stellt auch sicher, dass z. B. gemeinsame Dialoge zwischen Anwendungen gleich sind.
Bibliotheken können zur Laufzeit geladen und somit von verschiedenen gleichzeitigen Anwendungen gemeinsam genutzt werden. Dies wird als dynamische Verknüpfung bezeichnet.
In einigen Fällen kann die Bibliothek in der Anwendung selbst enthalten sein. Dies wird als statische Verknüpfung bezeichnet. Die statische Verknüpfung erleichtert die Bereitstellung auf Kosten der Flexibilität, da unterschiedliche Anwendungen jeweils dieselbe Kopie der DLL laden.
Eine statische Verknüpfung ist jedoch nicht immer eine Option. Beispielsweise können Sie eine .NET-Anwendung nicht statisch verknüpfen. Der Benutzer muss über die .NET-Bibliotheken verfügen, um eine .NET-Anwendung ausführen zu können, und Bibliotheken (oder Assemblys, wie sie in .NET aufgerufen werden) werden zur Laufzeit geladen.
DLLs werden mit denselben Tools erstellt, die zum Erstellen von Anwendungen verwendet werden. Die spezifischen Details hängen sehr stark von den verwendeten Werkzeugen ab.
quelle
DLL = Dynamic Link Library
Der Name ist eigentlich ziemlich beschreibend für das, was sie erreichen.
Bibliothek
Hiermit können Sie Code für eine bestimmte Problemdomäne an einem einzigen Speicherort isolieren. Teilen Sie dies dann für mehrere Anwendungen. Die Bibliothek kann jederzeit gegen eine andere ausgetauscht werden, um Fehler zu beheben oder Funktionen hinzuzufügen.
Verknüpfung
Sie können die Bibliothek mit einer Anwendung "verknüpfen", damit die Logik in der Bibliothek nicht direkt in die Anwendung kompiliert wird.
Dynamisch
Die Bibliothek kann bei Bedarf geladen werden. Anstatt eine riesige einzelne EXE-Datei in den Speicher zu laden, kann das Betriebssystem nur die benötigten Teile laden. Wenn eine DLL von Anwendungen gemeinsam genutzt wird, kann das Betriebssystem das Laden der Bibliothek optimieren und für Apps freigeben.
quelle
DLL- Dateien (Dynamic Link Library) können als kleine "Unterprogramme" beschrieben werden, die dazu beitragen sollen, dass ein größeres Programm gut läuft. Sie bieten die Möglichkeit, verschiedene Hardware- und Softwareressourcen (zu verschiedenen Zeitpunkten in ihren Laufzeitsitzungen) mit dem ausführbaren Hauptprogramm zu verknüpfen, auf dem sie basieren, und zwar "je nach Bedarf". Dadurch entfällt die Notwendigkeit, alles, was mit dem ausführbaren Hauptprogramm zu tun hat, beim ersten Ausführen des Programms in den RAM (Arbeitsspeicher) des Computers zu laden.
Die von DLLs übertragenen Softwareressourcen enthalten Code für die verschiedenen Programmfunktionen, die nicht wirklich benötigt werden, um das Programm am Laufen zu halten. Dies sind Funktionen, die nur zu bestimmten Zeiten während einer bestimmten Computersitzung aufgerufen werden müssen und möglicherweise gar nicht benötigt werden überhaupt gerufen werden. Das Laden dieser Funktionen (und es kann eine beträchtliche Anzahl von ihnen für ein bestimmtes Programm geben) in den RAM des Computers, wenn das Programm zum ersten Mal ausgeführt wird, und das anschließende Beibehalten dieser Funktionen während der gesamten Sitzung wäre eine Verschwendung von RAM-Speicherplatz - was als vorhanden angesehen wird eine Prämie.
Ein großer Fortschritt:
Überlegungen:
quelle
Dynamisch verknüpfte Bibliothek.
Um Ihnen ein Beispiel zu geben: Wenn Sie die DLL einer anderen Person in Ihre Anwendung geladen haben, können Sie Programmierbits daraus verwenden.
Sie können eine DLL laden, die Zufallszahlen generiert, die immer mit "5" oder so beginnen.
In Ihrem Programm können Sie CrazyDLL.GenerateRandomNumbersSorta () aufrufen und die Nummer wird zurückgegeben.
Für ein Beispiel aus der Praxis habe ich eine DLL, die 4 Textfelder kombiniert (Sie würden diese zum Eingeben von IP-Adressen verwenden) und automatisch nur Zahlen unter 256 akzeptiert und das Drücken der Rücktaste zum Springen zu einem vorherigen Textfeld handhabt.
Ich habe eine DLL mit diesem Code erstellt. Jetzt muss ich nur noch mehr dieser IP-Adress-Textfeldsammlungen ziehen und ablegen, ohne den gesamten Code immer wieder duplizieren zu müssen.
Dieselbe DLL bietet auch Funktionen zum Konvertieren von IP-Adressen in hexadezimale Zeichenfolgen und anderen nützlichen Code.
quelle
Aus der MSDN-Bibliothek :
Eine Dynamic Link Library (DLL) ist ein Modul, das Funktionen und Daten enthält, die von einem anderen Modul (Anwendung oder DLL) verwendet werden können.
quelle
DLL = Dynamic
LoadLink Library. Wie Sie bereits erfahren haben, handelt es sich im Grunde genommen um eine Sammlung von Funktionen, C ++ - Klassen und / oder globalen Variablen. Sie können die DLL statisch (dh das Betriebssystem lädt sie automatisch, wenn Ihr Programm startet) oder dynamisch (Ihr Programm lädt sie explizit) laden. Zu diesem Zeitpunkt stehen Ihrem Programm die Funktionen und Inhalte in der DLL zur Verfügung.Das Erstellen einer EXE-Datei ähnelt dem Erstellen einer EXE-Datei, außer dass keine
main()
Funktion vorhanden sein muss. Es gibt Linker-Anweisungen, die den Linker anweisen, eine DLL anstelle einer EXE-Datei zu erstellen.Der Hauptgrund, warum Sie dies tun möchten, besteht darin, Code an einer Stelle zu kapseln und ihn aus mehreren Exe zu verwenden, anstatt den Code mit jedem zu verknüpfen.
Ein etwas historischer Grund ist, dass Ihre Exe kleiner sein kann, da sich ein Teil des Codes physisch in einer anderen Datei befindet. Dies bedeutet, dass der von Ihrer Exe im Speicher belegte Speicherplatz kleiner sein kann. Auf modernen Systemen ist dies weniger ein Problem als früher, obwohl es unter Windows Mobile immer noch ein Problem sein kann.
quelle