Vorteile der dynamischen Verknüpfung
Dynamische Verknüpfung hat gegenüber statischer Verknüpfung die folgenden Vorteile:
- Mehrere Prozesse, die dieselbe DLL an derselben Basisadresse laden, teilen sich eine einzelne Kopie der DLL im physischen Arbeitsspeicher. Dies spart Systemspeicher und reduziert den Austausch.
- Wenn sich die Funktionen in einer DLL ändern, müssen die Anwendungen, die sie verwenden, nicht neu kompiliert oder neu verknüpft werden, solange sich die Funktionsargumente, Aufrufkonventionen und Rückgabewerte nicht ändern. Im Gegensatz dazu erfordert ein statisch verknüpfter Objektcode, dass die Anwendung neu verknüpft wird, wenn sich die Funktionen ändern.
- Eine DLL kann After-Market-Unterstützung bieten. Beispielsweise kann eine Anzeigetreiber-DLL so geändert werden, dass sie eine Anzeige unterstützt, die beim anfänglichen Versand der Anwendung nicht verfügbar war.
- Programme, die in verschiedenen Programmiersprachen geschrieben wurden, können dieselbe DLL-Funktion aufrufen, solange die Programme derselben Aufrufkonvention folgen, die von der Funktion verwendet wird. Die Aufrufkonvention (z. B. C, Pascal oder Standardaufruf) steuert die Reihenfolge, in der die aufrufende Funktion die Argumente in den Stapel pushen muss, ob die Funktion oder die aufrufende Funktion für das Bereinigen des Stapels verantwortlich ist und ob Argumente in Registern übergeben werden. Weitere Informationen finden Sie in der Dokumentation, die in Ihrem Compiler enthalten ist.
Ein möglicher Nachteil bei der Verwendung von DLLs liegt darin, dass die Anwendung nicht unabhängig ausgeführt werden kann; sie hängt von der Existenz eines separaten DLL-Moduls ab. Das System beendet Prozesse mithilfe der dynamischen Ladezeitverknüpfung, wenn sie eine DLL benötigen, die beim Starten des Prozesses nicht gefunden wird, und gibt dem Benutzer eine Fehlermeldung aus. Das System beendet in diesem Fall keinen Prozess mithilfe der dynamischen Laufzeitverknüpfung, aber funktionen, die von der fehlenden DLL exportiert werden, sind für das Programm nicht verfügbar.