bigpoint Geschrieben 14. Januar 2003 Geschrieben 14. Januar 2003 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 ?? Zitieren
Guybrush Threepwood Geschrieben 14. Januar 2003 Geschrieben 14. Januar 2003 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 Zitieren
bigpoint Geschrieben 14. Januar 2003 Autor Geschrieben 14. Januar 2003 Richtig, also statisch DLL zu linken und schreiben ist eigentlich sinnlos ?? Zitieren
Guybrush Threepwood Geschrieben 14. Januar 2003 Geschrieben 14. Januar 2003 Richtig, also statisch DLL zu linken und schreiben ist eigentlich sinnlos ?? 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. Zitieren
bigpoint Geschrieben 14. Januar 2003 Autor Geschrieben 14. Januar 2003 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 Zitieren
nic_power Geschrieben 14. Januar 2003 Geschrieben 14. Januar 2003 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 Zitieren
SgtBadAzz Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 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 Zitieren
gugelhupf Geschrieben 17. Januar 2003 Geschrieben 17. Januar 2003 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. Zitieren
Empfohlene Beiträge
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.