分享方式:


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 編譯器選項
設定編譯器選項