Eine lib-Datei wird vom Linker gelesen und eine DLL-Datei wird während der Ausführung verwendet. Eine lib-Datei ist während der Ausführung im Wesentlichen nutzlos und ein Linker kann eine DLL-Datei nicht lesen (außer möglicherweise auf eine Weise, die hier irrelevant ist).
Die Unterschiede zwischen der Verwendung von lib-Dateien für statische und dynamische Verknüpfungen mögen verwirrend sein, aber wenn Sie ein wenig Geschichte verstehen, wird dies sehr deutlich.
Ursprünglich gab es nur statische Bibliotheken. Bei einer statischen Bibliothek enthält die .lib-Datei obj-Dateien. Jede obj-Datei ist die Ausgabe einer und nur einer Compiler-Quellcode-Eingabedatei. Eine lib-Datei ist nur eine Sammlung verwandter obj-Dateien, ähnlich wie das Einfügen von obj-Dateien in ein Verzeichnis. Das ist im Wesentlichen eine lib-Datei, eine Bibliothek von obj-Dateien. Bei einer statischen Verknüpfung werden alle von einer ausführbaren Datei verwendeten obj-Dateien in einer Datei zusammengefasst. Vergleichen Sie dies mit einem dynamischen Link, in dem sich die ausführbare Datei in einer Datei befindet, die von dem anderen verwendeten Code getrennt ist.
Um eine dynamische Verknüpfung zu implementieren, hat Microsoft die Verwendung von lib-Dateien so geändert, dass sie auf eine DLL-Datei anstatt auf Speicherorte in einer obj-Datei verweisen. Ansonsten sind alle Informationen in einer Bibliothek für eine statische Verknüpfung dieselben wie für eine dynamische Verknüpfung. Sie sind alle gleich, was die Informationen in ihnen betrifft, außer dass eine lib-Datei für einen dynamischen Link die DLL-Datei angibt.