CL richiama il linker
CL richiama automaticamente il linker dopo la compilazione, a meno che non venga usata l'opzione /c. CL passa al linker i nomi dei file .obj creati durante la compilazione e i nomi di tutti gli altri file specificati nella riga di comando. Il linker usa le opzioni elencate nella variabile di ambiente LINK. È possibile usare l'opzione /link per specificare le opzioni del linker nella riga di comando CL. Le opzioni che seguono l'opzione /link sostituiscono quelle nella variabile di ambiente LINK. Le opzioni nella tabella seguente eliminano il collegamento.
Opzione | Descrizione |
---|---|
/c | Compilazione senza collegamento |
/E, /EP, /P | Pre-elaborazione senza compilazione o collegamento |
/Zg | Generare prototipi di funzione |
/Zs | Controllare la sintassi |
Per altri dettagli sul collegamento, vedere Opzioni del linker MSVC.
Esempio
Si supponga di compilare tre file di origine C: MAIN.c, MOD1.c e MOD2.c. Ogni file include una chiamata a una funzione definita in un file diverso:
MAIN.c chiama la funzione
func1
in MOD1.c e la funzionefunc2
in MOD2.c.MOD1.c chiama le funzioni
printf_s
della libreria standard escanf_s
.MOD2.c chiama le funzioni grafiche denominate
myline
emycircle
, definite in una libreria denominata MYGRAPH.lib.
Per compilare questo programma, compilare con la riga di comando seguente:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL compila prima i file di origine C e crea i file oggetto MAIN.obj, MOD1.obj e MOD2.obj. Il compilatore inserisce il nome della libreria standard in ogni file .obj. Per altri dettagli, vedere Usare la libreria di runtime.
CL passa i nomi dei file .obj, insieme al nome MYGRAPH.lib, al linker. Il linker risolve i riferimenti esterni nel modo seguente:
In MAIN.obj il riferimento a
func1
viene risolto usando la definizione in MOD1.obj; il riferimento afunc2
viene risolto usando la definizione in MOD2.obj.In MOD1.obj, i riferimenti a
printf_s
escanf_s
vengono risolti usando le definizioni nella libreria in cui il linker trova denominato all'interno di MOD1.obj.In MOD2.obj i riferimenti a
myline
emycircle
vengono risolti usando le definizioni in MYGRAPH.lib.
Vedi anche
Opzioni del compilatore MSVC
Impostazione delle opzioni del compilatore