CL 叫用連結器
除非使用 /c 選項,否則 CL 會在編譯之後自動叫用連結器。 CL 會傳遞至連結器,此連結器會在編譯期間建立.obj檔案的名稱,以及命令行上指定的任何其他檔案名稱。 鏈接器會使用LINK環境變數中列出的選項。 您可以使用 /link 選項,在 CL 命令列上指定連結器選項。 遵循 /link 選項的選項會覆寫 LINK 環境變數中的選項。 下表中的選項會隱藏連結。
選項 | 描述 |
---|---|
/c | 編譯而不連結 |
/E、/EP、/P | 前置處理而不進行編譯或連結 |
/Zg | 產生函式原型 |
/Zs | 檢查語法 |
如需連結的進一步詳細數據,請參閱 MSVC 連結器選項。
範例
假設您正在編譯三個 C 原始程式檔:MAIN.c、MOD1.c 和 MOD2.c。 每個檔案都包含對不同檔案中定義之函式的呼叫:
MAIN.c 會在MOD1.c中呼叫 函
func1
式,並在MOD2.c中呼叫 函func2
式。MOD1.c 會呼叫標準連結函式
printf_s
與scanf_s
。MOD2.c 會呼叫名為
myline
和mycircle
的圖形函式,這些函式定義於名為 MYGRAPH.lib 的連結庫中。
若要建置此程式,請使用下列命令行進行編譯:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL 會先編譯 C 原始程序檔,並建立對象檔MAIN.obj、MOD1.obj和MOD2.obj。編譯程式會將標準連結庫的名稱放在每個.obj檔案中。 如需詳細資訊,請參閱 使用運行時間連結庫。
CL 會將.obj檔名以及 MYGRAPH.lib 名稱傳遞給連結器。 連結器會解析外部參考,如下所示:
在 MAIN.obj 中,會使用 MOD1.obj 中的定義解析 對 的參考
func1
;對 的參考func2
是使用 MOD2.obj 中的定義解析。在 MOD1.obj 中,連結器在連結器MOD1.obj內尋找具名的連結庫中定義,來解析 和
scanf_s
的參考printf_s
。在 MOD2.obj中,會使用 MYGRAPH.lib 中的定義來解析 和
mycircle
的參考myline
。