Condividi tramite


Richiamo di CL da parte del linker

CL richiama automaticamente il linker dopo la compilazione, a meno che non venga utilizzata l'opzione /c. CL passa al linker i nomi dei file obj creati durante la compilazione e i nomi di qualsiasi altro file specificato nella riga di comando. Il linker utilizza le opzioni elencate nella variabile di ambiente LINK. È possibile utilizzare l'opzione /link per specificare le opzioni del linker nella riga di comando CL. Con le opzioni che seguono l'opzione /link viene eseguito l'override delle opzioni presenti nella variabile di ambiente LINK. Le opzioni riportate nella tabella che segue consentono di disattivare il collegamento.

Opzione

Oggetto di descrizione

/c

Compilazione senza collegamento

/E, /EP, /P

Pre-elaborazione senza compilazione o collegamento

/Zg

Generazione di prototipi di funzione

/Zs

Controllo della sintassi

Per ulteriori informazioni sul collegamento, vedere Opzioni del linker.

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 differente:

  • MAIN.c chiama la funzione func1 in MOD1.c e la funzione func2 in MOD2.c.

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

  • MOD2.c chiama le funzioni di grafica denominate myline e mycircle, che sono definite in una libreria denominata MYGRAPH.lib.

Per compilare questo programma, utilizzare la seguente riga di comando:

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 informazioni più dettagliate, vedere Utilizzo della 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 utilizzando la definizione in MOD1.obj. Il riferimento a func2 viene risolto utilizzando la definizione in MOD2.obj.

  2. In MOD1.obj i riferimenti a printf_s e scanf_s vengono risolti utilizzando le definizioni nella libreria che il linker trova specificate all'interno di MOD1.obj.

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

Vedere anche

Riferimenti

Opzioni del compilatore

Impostazione delle opzioni del compilatore