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_sscanf_s

  • MOD2.c 會呼叫名為 mylinemycircle 的圖形函式,這些函式定義于名為 MYGRAPH.lib 的程式庫中。

若要建置此程式,請使用下列命令列進行編譯:

CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib

CL 會先編譯 C 原始程式檔,並建立物件檔 MAIN.obj、MOD1.obj 和 MOD2.obj。編譯器會將標準程式庫的名稱放在每個 .obj 檔案中。 如需詳細資訊,請參閱 使用執行時間程式庫

CL 會將 .obj 檔案的名稱以及名稱 MYGRAPH.lib 傳遞給連結器。 連結器會解析外部參考,如下所示:

  1. 在 MAIN.obj 中,使用 MOD1.obj 中的定義解析 對 的參考 func1 ;的參考 func2 是使用 MOD2.obj 中的定義解析。

  2. 在 MOD1.obj 中,連結器在 MOD1.obj 內找到名為 的程式庫中定義,可解析 和 scanf_s 的參考 printf_s

  3. 在 MOD2.obj 中,會使用 MYGRAPH.lib 中的定義解析 和 mycircle 的參考 myline

另請參閱

MSVC 編譯器選項
設定編譯器選項