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 Funktion func2 in MOD2.c auf.

  • MOD1.c ruft die Standardbibliotheksfunktionen und -funktionen printf_s auf scanf_s.

  • MOD2.c ruft Grafikfunktionen namens myline und mycircle, 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:

  1. In MAIN.obj wird der Verweis func1 mithilfe der Definition in MOD1.obj aufgelöst; der Verweis func2 wird mithilfe der Definition in MOD2.obj aufgelöst.

  2. In MOD1.obj werden die Verweise printf_s auf und scanf_s werden mithilfe der Definitionen in der Bibliothek aufgelöst, die der Linker innerhalb MOD1.obj findet.

  3. In MOD2.obj werden die Verweise myline auf und mycircle werden mithilfe der Definitionen in MYGRAPH.lib aufgelöst.

Siehe auch

MSVC-Compileroptionen
Festlegen von Compileroptionen