CL: Starten des Linkers
CL ruft den Linker nach dem Kompilieren automatisch auf, es sei denn, die Option "/c" wird verwendet. CL übergibt an den Linker die Namen .obj Dateien, die während der Kompilierung erstellt wurden, und die Namen aller anderen Dateien, die in der Befehlszeile angegeben sind. Der Linker verwendet die optionen, die in der LINK-Umgebungsvariable aufgeführt sind. Sie können die Option "/link" verwenden, um Linkeroptionen in der CL-Befehlszeile anzugeben. Optionen, die auf die Option "/link" folgen, setzen diese in der LINK-Umgebungsvariable außer Kraft. Die Optionen in der folgenden Tabelle unterdrücken die Verknüpfung.
Option | Beschreibung |
---|---|
/c | Kompilieren ohne Verknüpfung |
/E, /EP, /P | Vorverarbeitung ohne Kompilierung oder Verknüpfung |
/Zg | Generieren von Funktionsprototypen |
/Zs | Überprüfen der Syntax |
Weitere Details zum Verknüpfen finden Sie unter MSVC Linker-Optionen.
Beispiel
Gehen Sie davon aus, dass Sie drei C-Quelldateien kompilieren: MAIN.c, MOD1.c und MOD2.c. Jede Datei enthält einen Aufruf einer Funktion, die in einer anderen Datei definiert ist:
MAIN.c ruft die Funktion
func1
in MOD1.c und die Funktionfunc2
in MOD2.c auf.MOD1.c ruft die Standardbibliotheksfunktionen und -funktionen
printf_s
aufscanf_s
.MOD2.c ruft Grafikfunktionen namens
myline
undmycircle
, die in einer Bibliothek mit dem Namen MYGRAPH.lib definiert sind.
Um dieses Programm zu erstellen, kompilieren Sie mit der folgenden Befehlszeile:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL kompiliert zuerst die C-Quelldateien und erstellt die Objektdateien MAIN.obj, MOD1.obj und MOD2.obj. Der Compiler platziert den Namen der Standardbibliothek in jeder .obj Datei. Weitere Informationen finden Sie unter Verwenden der Laufzeitbibliothek.
CL übergibt die Namen der .obj Dateien zusammen mit dem Namen MYGRAPH.lib an den Linker. Der Linker löst die externen Verweise wie folgt auf:
In MAIN.obj wird der Verweis
func1
mithilfe der Definition in MOD1.obj aufgelöst; der Verweisfunc2
wird mithilfe der Definition in MOD2.obj aufgelöst.In MOD1.obj werden die Verweise
printf_s
auf undscanf_s
werden mithilfe der Definitionen in der Bibliothek aufgelöst, die der Linker innerhalb MOD1.obj findet.In MOD2.obj werden die Verweise
myline
auf undmycircle
werden mithilfe der Definitionen in MYGRAPH.lib aufgelöst.