Wieso eine DLL Probleme in mehreren Programmen beseitigt


Thomas Wölfer
Thomas Wölfer

24. Mai 2004


Im Normalfall empfehle ich bei Updates der Statikprogramme grundsätzlich die Installation des CD-Rom Images aus dem Download-Bereich. Das macht die Sache schmerzfrei und stellt sicher, das wirklich immer alle Komponenten vorliegen - und man muss trotzdem nur eine einzelne Datei runterladen.

Trotzdem stellen wir manchmal (heute zum Beispiel :-)) auch einzelne DLLs im 'Patch' Ordner als Download zur Verfügung. Ich rate davon ab diese Patches zu benutzen - möchte aber trotzdem aus einem anderen Gesichtspunkt einmal auf diese DLLs eingehen. Es stellt sich in diesem Zusammenhang nämlich eine interessante Frage: Warum kann eine einzelne DLLs eigentlich ein Problem in mehreren Programmen beseitigen?

Dazu muss man wissen, wie sich Windows-Programme zusammensetzen können (und das im Fall unserer Baustatik-Software auch tun).

Ein Programm besteht aus einer Menge an Einzelteilen: Es gibt vom Computer ausführbaren Code, es gibt statische Daten (wie zum Beispiel die Icons oder die Texte auf den Menüs), es gibt Datenbibliotheken (wie zum Beispiel die Materialdatenbank) und vieles mehr.

Nun ist es so, das sich einige Teile davon eignen, an mehreren Stellen wiederverwendet zu werden. Bei der Materialdatenbank ist das einsichtig: Natürlich macht es Sinn, das alle Programme auf die gleiche Datenbank zugreifen - schließlich sind es ja auch immer die gleichen Materialien um die es geht.

Man kann aber eben nicht nur Daten, sondern auch Programmcode wiederverwenden. Zum Wiederverwenden von Programmcode gibt es diverse Methoden, und eine davon ist die, den Code in eine DLL zu packen. Die DLL wird dann erst zu dem Zeitpunkt mit einem Programm verbunden, zu dem das Programm (also die Datei mit der Erweiterung .EXE) gestartet wird - und nicht schon auf dem Rechner des Entwicklers, wie das mit dem Rest des Programmcodes der in der .EXE-Datei vorliegt geschehen ist.

Ist der Programmcode aber auf diese Art ausgelagert worden, kann er von jedem Programm benutzt werden. Effekt: Hat der Code in der DLL einen Fehler - dann tritt der auch bei allen Programmen auf, die die DLLs benutzen.

Beseitigt man den Fehler, dann sind auf einen Schlag mehrere Programme einen Fehler los. Und genau das ist der Grund, warum eine einzelne DLL mehrere Programme auf einen Schlag korrigieren kann.