Grundlagen DLL

Wenn Sie gar nichts über DLL’s wissen, dann sind Sie hier richtig. Auf dieser Seite lassen wir uns zunächst über das Für und Wider von DLL’s aus. Früher oder später müssen Sie sich damit befassen und landen hier. Das Wesen der arbeitsteiligen Programmierung ist in der DLL abgelegt.

Wesen der DLL

Eine DLL ist ein kompiliertes Programm oder eine kompilierte Unit. Diese kompilierte Unit ist in C einer sehr computernahen Sprache verfasst. Dies bedeutet, das wir einige unserer Variablen-Typen in C-kompatible Variablen umwandeln müssen. Hiermit haben Anfänger ein Problem, bedeutet es doch weder zusätzliche Programmiertätigkeiten, die dass eigentliche Ziel, ein Programm zu schreiben wieder in die Ferne rücken lässt. Auf diesem Seitenabschnitt werden Sie erfahren wie vielfältig und verwirrend das Thema DLL ist. Ich weiß, dass Sie gerne Programme schreiben wollen. Da möchten Sie sich mit sowas nicht auseinandersetzen. Mir ging es jedenfalls so. Allerdings ist das Benutzen von DLL’s ein unverzichtbarer Teil vom Programmieren. Früher oder Später müssen Sie sich damit befassen.

Warum DLL’s in ‚C‘ geschrieben sind.

C ist eine sehr alte Programmiersprache und ist nahe an der Maschine. Sie ist der direkte logische Nachkomme der Maschinen-Sprache. Eine Sprache in der es um Register und dem Beschreiben und Manipulieren von Zahlen geht. Dies ist der unabdingbare direkte Weg um mit einem PC zu kommunizieren. Daher ist die Hochsprache C schon eine Erleichterung und nimmt uns die mathematische und absolut nicht menschenbezogene Kommunikation mit der Maschine ab. Ein Betriebssystem mit einer Bedienoberfläche kommt ohne DLL’s nicht aus. Wir benötigen also sinnvolle Programmteile um ein ganzes funktionierendes Konstrukt zu erschaffen. Damit diese Programmteile untereinander kommunizieren können, müssen wir uns auf eine Art der Kommunikation einigen. Diese Art der Kommunikation ist C, weil es zuerst da war. Die in Lazarus geschriebenen DLL’s haben eine C-Schnittstelle. So ist es Möglich mit der kompilierten DLL andere Programme mit unseren Funktionen zu beglücken.

Windows und DLL’s

Ich beziehe mich hier auf Windows. Jedoch funktionieren alle Programmoberflächen nach dem gleichen Prinzip. Jedes Fenster, um es für den Anfänger einfach auszudrücken, bekommt eine Nummer, ein so genanntes „Handle“. Hiernach wird auch quasi gehandelt. Das Betriebssystem verwaltet diese Nummern die zu einem Prozess oder zu einem Fenster gehören. Dies ist wichtig um die Reihenfolge und auch die Prioritäten in der Abarbeitung der einzelnen Informationen zu gewährleisten. Damit nun die einzelnen DLL‘ s miteinander Reden können benötigen Diese in erster Linie 2 Dinge.
1. Sie müssen wissen wann Sie drankommen. Das Handle ist sozusagen ein Ticket und so sitzen die DLL’s im Wartesaal des Computers und werden dann vom zuständigen Zuteilungspersonal aufgerufen.
2. Wenn Sie dann zur verantwortlichen Stelle gerufen werden, ist es wichtig, dass die Funktionen verstanden werden („C“) und keinen Mist erzählen (Syntaxfehler).

Laufen gerade DLL’s im Hintergrund ?

Ja, diese DLL’s sind ein Teil des Betriebssystems. Wenn Sie den Taskmanager starten sehen Sie einen großen Teil der Programme, die zur Zeit ausgeführt werden. Sie sehen aber nicht was Sie sagen. Hierzu benötigen Sie ein Monitor-Programm welches die Botschaften sichtbar macht. Wenn Sie sich also die Funktion von Windows vor Augen führen wollen, dann können Sie sich den Process-Monitor-Programm downloaden. Dies erfordert keine Installation. Doch Vorsicht ! Speichern sie alles was Ihnen lieb und teuer ist ab. Das Abfangen der Botschaften erfordert Rechenleistung! Dies kann Ihren Rechner in die Knie zwingen. Deswegen werden Sie auch beim Programmstart nach Filterung gefragt. Wenn Sie mutig genug sind, klicken Sie einfach auf OK und geben keinen Filter an. Sie werden überrascht und entsetzt sein, was da alles im Hintergrund abläuft. Aber lassen Sie sich von der Fülle der Aufrufe nicht vom Programmieren abschrecken.

Screenshoot Prozess-Monitor
Ein Screenshoot der ersten Zeilen der ausgeführten Prozesse.

Nun habe ich hier mal einen Schnappschuss von dem Programm gemacht. Hier sehen Sie wann, welches Programm mit welchem Ticket sich bei einer DLL bedient und ob das dann gelungen ist. Die Aufrufe werden von Version zu Version umfangreicher. Ich kann die einzelnen Funktionen und was diese bewirken auch nicht mehr nachvollziehen.

Vorzüge einer DLL

Der Grundgedanke einer DLL ist das gemeinsame verwenden von Quelltext. Hierdurch kann Speicherplatz auf der Festplatte und im Arbeitsspeicher eingespart werden. Der Sinn wäre hier durchaus gegeben. Leider funktioniert es in der Praxis nicht so gut. Im untenstehenden Bild sehen Sie das Ergebnis einer suchanfrage im Dateiexplorer. Ich habe hier im Windows Verzeichnis nach der kernel32.dll gesucht. Diese DLL ist ein wichtiger Bestandteil des Windows Betriebssystems. Ohne diese DLL funktioniert Windows nicht mehr.

Jetzt werden Sie sich sicher fragen: Warum existiert diese DLL so häufig auf meinem Rechner ? Dies sind Versionen die entweder als Ergänzung von Updates oder zur Sicherheit auf dem Rechner verbleiben. Ich weis hierbei nicht genau welche von den Dateien noch aktiv ist und welche ich getrost löschen kann. Ich könnte es herausfinden und vielleicht mache ich dies auch mal, aber zum jetzigen Zeitpunkt ist das für mich kein Thema, da meine Festplatte groß genug ist. Ich wollte Ihnen damit lediglich zeigen, dass die Geschichte von der sparsamen DLL, wirklich nur eine Geschichte ist. :Roll: Letztendlich liegt der Vorteil einer DLL in der Verschleierung des Quelltextes. Also kommen wir zu den:

Nachteilen der DLL

Statt den Quelltext für Andere sichtbar offenzulegen wird dies aus finanziellen Gründen nicht getan. Die Entwicklung einer Software kostet Geld und die Mühe hierfür, darf anderen nicht einfach so übergeben werden. Allein dieser Grund reicht aus, um das Dasein der DLL’s zu rechtfertigen. Wann immer wissenschaftliche Erkenntnisse mit finanziellen Interessen korrelieren kommt am Ende nur Murks raus. Und so schweben um einer Handvoll sinnvoller DLL’s ein Haufen unnötiger Quelltext in Form von DLL’s. Dies ist analog zu unserem Planeten zu sehen um den auch ein Haufen Weltraumschrott kreist. Die meisten DLL’s sind nicht dokumentiert, so dass die Nutzung von Aussehstehenden schwer möglich ist. Es gibt Betriebe die Aufgrund der Firmenstruktur ihren Quelltext untereinander nur als DLL weitergeben. Konkurrenz im eigenen Betrieb durch Subunternehmer. Für das Weiterkommen als Gesellschaft oder gar als Menschheit ist das Verhalten eher kontraproduktiv. Warum reden wir dann überhaupt über DLL’s ?

Warum wir uns mit DLL’s beschäftigen sollten

  • DLL’s sind ein wesentlicher Bestandteil des Betriebssystems.
  • Andere Programmiersprachen nehmen gleich den kompletten Compiler mit JAVA, Python u.a.
  • Erst wenn Sie DLL’s geschrieben haben, können Sie DLL’s besser verstehen.
  • Es gibt ein paar gut dokumentierte DLL’s die für alle nutzbar sind und darüber hinaus gut Dokumentiert sind. Darunter die wichtigen Windows DLL’s.
  • Sie können als Programmierer auch DLL’s für die Allgemeinheit erstellen und diese gut Dokumentieren.

Unit vs DLL

Sie können sich sicher Denken, dass ich die Unit vor einer DLL vorziehe. Gerade in Lazarus kommen Sie mit einem Linksklick bei gehaltener Shift-Taste in der Definition des Befehls einen Schritt zurück. Hier braucht keiner was dekompilieren um hinter eine Funktion zu kommen. Wo möglich ist an der passenden Stelle noch ein wichtiger Kommentar hinterlegt. Dies macht die Unit zu einem produktionsfördernden Prinzip. Außerdem muss wegen ein oder zwei Funktionen keine komplette DLL mitgeschleppt werden. Selbst mit einem Installations-Tool wird bei einer Deinstallation die vielleicht nutzlose DLL nicht von Ihrem Rechner entfernt. Dies kann insbesondere dann vorkommen, wenn das Programm, welches Sie zu deinstallieren gedenken, weil Dieses vielleicht vorher abgestürzt ist, immer noch das Handle zur DLL besitzt. Was in dem Fall einem temporären Löschverbot gleichkommt. Und so verwundert es nicht das so manches Windows-Verzeichnis im Laufe der Zeit wie ein öffentlicher unbewachter Rastplatz aussieht. Denn auch im Windows-Verzeichnis stehen Sie eigentlich irgendwann bis zu den Knien im Müll. Allerdings mit dem Unterschied, dass Sie hier zwischen benötigten Dingen (Bank) und Schrott (Getränkedose) nicht mehr unterscheiden können.

Lassen Sie sich nicht beirren

Lernen Sie zunächst einmal die Möglichkeit der DLL kennen. Auch wenn Sie auf diesen Seiten eine nur begrenzte Unterstützung für die DLL’s bekommen. Zumindest was das Erstellen einer Solchen angeht. Vielleicht schreiben Sie ja eine brauchbare und gut funktionierende DLL die sie nach Möglichkeit sehr gut Dokumentieren so das Andere diese anwenden können.