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
。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應