Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

HALLO

Ich stelle mir immer wieder eine Frage vielleicht konnte man mir die beantworten ?

Es geht um DLL und #include soweit ich die DLl verstehe man kann die statisch und dynamisch laden,

und jetzt die Frage wenn ich die statisch lade dann binde ich doch die ganze DLL in mein Projekt ein so wie beim includen dh. das ganze wird in eine exe umgewandelt, oder wie ist es denn richtig ??

Denn wen es so wirklich ist dann braucht man doch die DLL’s nicht statisch laden ??

Geschrieben
Ich stelle mir immer wieder eine Frage vielleicht konnte man mir die

beantworten ?

Vielleicht;)

Also, wenn du eine Dll statisch lädst wird sie im Prinzip deiner Exe hinzugefügt

so dass der ganze benötigte Code direkt in die Exe gelinkt wird.

Wenn du Sie aber dynamisch lädst wird sie nicht miteingebunden sodass du

die Exe nur auf einem PC ausführen kannst wenn die Dll vorhanden ist.

Der vorteil des Dynamischen ladens ist halt das die exe sehr viel kleiner ist.

Gruß

Guybrush

Geschrieben
Originally posted by Guybrush Threepwood

Nein, warum? Wenn du etwas statisch linkst dann mußt du nicht die ganzen

DLLs extra mitliefern, es kommt immer auf die Situation an würde ich sagen.

Also wenn man eine DLL mehrmals abrufen will sollte man statisch binden sonst dynamisch oder wie ist die regeln

Geschrieben
Originally posted by 007ski

Also wenn man eine DLL mehrmals abrufen will sollte man statisch binden sonst dynamisch oder wie ist die regeln

Beides hat seine Vor- und Nachteile (wobei die Vorteile beim dynamischen Linken ueberwiegen). Beim statischen Linken werden saemtliche Abhaengigkeiten zu Bibliotheken aufgeloest und der komplette Code zu einer einzigen Datei gelinkt. Das hat den Vorteil, dass Du auf dem Zielsystem keine zusaetzlichen Bibliotheken benoetigst. Nachteilig ist, dass die Programme sehr gross werden koennen.

Wird dynamisch gelinkt, werden die Bibliothken beim Starten des Programms geladen und die Referenzen aufgeloest. Man erhaelt deutlich kleinere Programme, bei Fehlern in den Bibliotheken reicht es, die Bibliothek auszutauschen (ein erneutes Linken ist nicht notwendig). Weiterhin koennen Code Segmente gemeinsam genutzt werden - zumindest auf Unix-basierten Systemen, das Code Segement wird nur einmal in den Speicher geladen und kann - da schreibgeschuetzt - von allen Programmen verwendet werden, die diese Bibliothek verwenden. Das heisst, Deine Programme sind auch zur Laufzeit kleine und belegen weniger Hauptspeicher.

Nic

Geschrieben
Originally posted by 007ski

Richtig, also statisch DLL zu linken und schreiben ist eigentlich sinnlos ??

Wenn ich den Code eh statisch linken will, dann macht eine DLL wenig Sinn.

DLL's machen Sinn wenn in ihnen code steckt der von mehr als nur einer Anwendung

verwendet werden kann, weil dann hat man den Code nur einmal im System und

man kann (wenn man die Schnittstelle nicht veraendert sondern nur den code) die

DLL einfach gegen eine andere Version austauschen, in der z.B. Fehler gefixt sind usw. usw..

Beispiele fuer solche DLL's koennten z.B. mathematische Bibliotheken sein weil das Ziehen der Wurzel ja eigentlich immer gleich gemacht wird , ein anderes Beispiel

waere eine Rechtschreibpruefung oder die Microsoft Foundation Classes, die gibt es

ja in jedem WIndows-System unter dem Namen MFCxxx.DLL (xxx ist die Versionsnummer), also wie du siehst gibt es einige gute Einsatzgebiete fuer DLL's.

Frank

Geschrieben

Nur mal so am Rande.

Die Begriffe statisch und dynamisch werden auch im Kontext von DLL's unterschiedlich interpretiert.

Man kann (z.B. unter COM) DLL's dynamisch laden, dass bedeutet das die DLL zu einem bestimmten Zeitpunkt in den Prozessraum geladen wird.

Umgekehrt bedeutet in diesem Kontext, dass eine DLL statisch geladen wird beim Prozesstart.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...