020
10.03.2006, 02:35 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von Marco15: |
Was is denn der Unterschied?
|
*.lib-Dateien sind sogenannte "Statische Laufzeitbibliotheken". Aus diesen Bibliotheken holt der Linker den Code für Funktionen wie beispielsweise printf oder gets, und bindet ihn ins Programm ein. (In ungünstigen Fällen auch die ganze Datei, wodurch das Programm unnötig gross wird.)
Im Gegensatz dazu ist eine DLL eine "Dynamische Laufzeitbibliothek". Diese werden erst dann geladen, wenn das Programm schon läuft, d.h. zur Laufzeit. Diese Bibliotheken können in den Speicher geladen werden, müssen aber nicht. Deshalb nennt man sie "dynamisch". Der Code aus einer statischen Laufzeitbibliothek wird dagegen immer geladen, wenn ein Programm gestartet wird.
Diese dynamischen Laufzeitbibliotheken kann man auch selbst erstellen, wenn ein Programm sehr umfangreich wird. Ein Beispiel dafür wäre eine Bildverarbeitung. Da gibt es Funktionen (Filter) zum Konturenschärfen, Kontraste verändern oder ähnliches, die man nicht immer braucht. Wenn diese Funktionen in einer DLL realisiert sind, genügt es, wenn sie erst dann in den Speicher geholt werden, wenn der/die Anwender/in sie benutzen will. Werden sie nicht benötigt, können sie auch auf der Festplatte bleiben, und der Speicherplatz steht für andere Dinge zur Verfügung.
Zitat: |
Und warum braucht jeder Compiler andere Bibliotheksdateien?
|
Das musst Du die Hersteller der Compiler fragen. Das dürfte zum Teil technische Gründe haben, hat aber wohl eher damit zu tun, das jeder Hersteller seine eigenen Vorstellungen davon hat, wie etwas zu realisieren ist. Aber genau weis ich das auch nicht.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |