Lib (Dateierweiterung)
# Lib (Dateierweiterung)

Die Dateinamenserweiterung .lib kann auf Windows-Systemen für zwei unterschiedliche Typen von Dateien stehen. Einerseits für eine Statische Bibliothek, andererseits für die Import Library einer Dynamischen Bibliothek. Beide Dateitypen werden in der Anwendungsentwicklung genutzt, um gewisse Funktionalität verschiedenen Programmen zur Verfügung zu stellen. Beide Typen werden im PE/COFF gespeichert. .lib-Dateien werden nur in der Entwicklung von Programmen, die direkt in Maschinencode übersetzt werden, verwendet. Für .Net-Framework-Programme gibt es keine statischen Bibliotheken oder Import Libraries mehr. Stattdessen werden alle benötigten Informationen in einer DLL-Datei zusammengefasst.

## .Lib als Statische Bibliothek

Ein .lib-File als statische Bibliothek enthält sowohl alle Informationen, die notwendig sind, um das Programm zu linken, als auch die Instruktionen selbst. Die .lib Datei wird dabei in der Regel vom Programm LIB.EXE (dem Library Manager von Visual Studio) erzeugt. Wenn ein anderes Programm die Funktionalitäten der Bibliothek nutzen will, muss man dem Linker zur Übersetzungszeit die .lib Datei übergeben. Dieser findet die benötigten Funktionen und bindet sie fest in das zu erstellende Programm ein. Zum Ausführen des Programmes wird die .lib Datei nicht mehr verwendet.

## Import Library

Eine Import Library einer Dynamischen Bibliothek enthält Informationen, um ein Programm gegen eine dynamische Bibliothek zu linken. Die .lib-Datei wird in der Regel vom Programm LINKER.EXE (dem Linker von Visual Studio) während des Kompilierens einer dynamischen Bibliothek (einer DLL) erzeugt, und muss mit dieser zusammen weitergegeben werden. Sie erhält Informationen darüber, welche Funktionalitäten in der DLL zu finden sind, und wie diese von anderen Programmen benutzt werden können. Damit ein anderes Programm diese Funktionalitäten verwenden kann, muss dem Linker zur Übersetzungszeit die Import Library angegeben werden, damit dieser die Funktionen finden und referenzieren kann. Im Gegensatz zu einer statischen Bibliothek sind in der Import Library aber keine Instruktionen vorhanden. Diese werden während der Ausführung des Programmes direkt aus der DLL gelesen. Zum Ausführen des Programmes wird die .lib Datei nicht mehr verwendet.

Neben diesem (als Implizitem Linken bezeichneten Vorgang), kann eine DLL auch explizit gelinkt werden. Dabei wird die DLL sowie die aufzurufende Funktion im Programmcode explizit angegeben. Dafür ist keine Import-Library notwendig.

