Condividi tramite


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

  • MOD1.c chiama le funzioni printf_s della libreria standard e scanf_s.

  • MOD2.c chiama le funzioni grafiche denominate myline e mycircle, 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:

  1. In MAIN.obj il riferimento a func1 viene risolto usando la definizione in MOD1.obj; il riferimento a func2 viene risolto usando la definizione in MOD2.obj.

  2. In MOD1.obj, i riferimenti a printf_s e scanf_s vengono risolti usando le definizioni nella libreria in cui il linker trova denominato all'interno di MOD1.obj.

  3. In MOD2.obj i riferimenti a myline e mycircle vengono risolti usando le definizioni in MYGRAPH.lib.

Vedi anche

Opzioni del compilatore MSVC
Impostazione delle opzioni del compilatore