CL vyvolává linker
CL po kompilaci automaticky vyvolá linker, pokud se nepoužije možnost /c. CL předá linkeru názvy .obj souborů vytvořených při kompilaci a názvy všech ostatních souborů zadaných na příkazovém řádku. Linker používá možnosti uvedené v proměnné prostředí LINK. Pomocí možnosti /link můžete zadat možnosti linkeru na příkazovém řádku CL. Možnosti, které následují za možností /link, přepíší ty v proměnné prostředí LINK. Možnosti v následující tabulce potlačí propojení.
Možnost | Popis |
---|---|
/c | Kompilace bez propojení |
/E, /EP, /P | Předběžné zpracování bez kompilace nebo propojení |
/Zg | Generování prototypů funkcí |
/Zs | Kontrola syntaxe |
Další podrobnosti o propojení najdete v tématu Možnosti linkeru MSVC.
Příklad
Předpokládejme, že kompilujete tři zdrojové soubory jazyka C: MAIN.c, MOD1.c a MOD2.c. Každý soubor obsahuje volání funkce definované v jiném souboru:
FUNKCE MAIN.c volá funkci
func1
v MOD1.c a funkcifunc2
v MOD2.c.MOD1.c volá standardní funkce
printf_s
knihovny ascanf_s
.MOD2.c volá grafické funkce pojmenované
myline
amycircle
, které jsou definovány v knihovně s názvem MYGRAPH.lib.
Chcete-li sestavit tento program, zkompilujte následující příkazový řádek:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
Cl nejprve zkompiluje zdrojové soubory jazyka C a vytvoří soubory objektů MAIN.obj, MOD1.obj a MOD2.obj. Kompilátor umístí název standardní knihovny do každého souboru .obj. Další podrobnosti najdete v tématu Použití knihovny za běhu.
CL předá názvy .obj souborů spolu s názvem MYGRAPH.lib linkeru. Linker vyřeší externí odkazy následujícím způsobem:
V MAIN.obj se odkaz na tento problém
func1
vyřeší pomocí definice v MOD1.obj; odkaz na tento problémfunc2
se vyřeší pomocí definice v MOD2.obj.V MOD1.obj jsou odkazy na
printf_s
ascanf_s
jsou vyřešeny pomocí definic v knihovně, kterou linker najde v MOD1.obj.V MOD2.obj se odkazy na
myline
amycircle
přeloží pomocí definic v knihovně MYGRAPH.lib.