共用方式為


連結器屬性頁

下列屬性位於 [專案]>[屬性]>[設定屬性]>[連結器]。 如需連結器的詳細資訊,請參閱 CL 叫用連結器連結器選項

一般屬性頁

輸出檔案

/OUT 選項會覆寫連結器所建程式的預設名稱和位置。

顯示進度

列印連結器進度訊息

Choices

  • 未設定 - 無詳細資訊。
  • 顯示所有進度訊息 - 顯示所有進度訊息。
  • 針對搜尋的程式庫 - 只針對搜尋的程式庫顯示進度訊息。
  • 關於最佳化連結期間的 COMDAT 折疊 - 顯示最佳化連結期間的 COMDAT 折疊相關資訊。
  • 關於最佳化連結期間移除的資料 - 顯示最佳化連結期間移除的函式和資料相關資訊。
  • 關於與 SEH 不相容的模組 - 顯示與安全例外狀況處理不相容的模組相關資訊。
  • 關於與受控程式碼相關的連結器活動 - 顯示與受控程式碼相關的連結器活動相關資訊。

版本

/VERSION 選項會指示連結器將版本號碼置於 .exe.dll 檔案的標頭中。 使用 DUMPBIN /HEADERS 查看 OPTIONAL HEADER VALUES 的映像版本欄位,以了解 /VERSION 的效果。

啟用累加連結

啟用累加連結。 (/INCREMENTAL, /INCREMENTAL:NO)

隱藏啟動橫幅

/NOLOGO 選項表示不顯示著作權訊息和版本號碼。

忽略匯入程式庫

這個屬性會告知連結器不要將這個組建所產生的任何 .lib 輸出連結到任何相依專案。 這可讓專案系統處理在建置時不會產生 .lib 檔案的 .dll 檔案。 如果專案相依於另一個會產生 DLL 的專案,則專案系統會自動連結該子專案所產生的 .lib 檔。 此屬性不一定要在產生 COM DLL 或僅限資源 DLL 的專案中,因為這些 DLL 不會產生任何有意義的匯出。 如果 DLL 沒有匯出,連結器就不會產生 .lib 檔案。 如果沒有任何匯出的 .lib 檔案,專案系統會告知連結器連結該遺漏的 DLL,連結就會失敗。 請使用 [忽略匯入程式庫] 屬性來解決此問題。 設定為 [是] 時,專案系統會忽略該 .lib 檔案是否存在,並且會導致相依於此專案的任何專案都不要與不存在的 .lib 檔案連結。

若要以程式設計方式存取此屬性,請參閱 IgnoreImportLibrary

登錄輸出

對組建輸出執行 regsvr32.exe /s $(TargetPath),這只有在 .dll 專案上才有效。 對於 .exe 專案,則會忽略這個屬性。 若要註冊 .exe 輸出,請在設定上設定建置後事件,以執行已註冊的 .exe 檔案一律需要的自訂註冊。

若要以程式設計方式存取此屬性,請參閱 RegisterOutput

個別使用者重新導向

Visual Studio 中的註冊歷來都在 HKEY_CLASSES_ROOT (HKCR) 中執行。 使用 Windows Vista 和更新版本的作業系統,若要存取 HKCR 您必須以提升權限模式執行 Visual Studio。 開發人員不一定想要在提升權限的模式中執行,但仍然必須使用註冊。 個別使用者重新導向,可讓您不需要以提升權限模式執行即可註冊。

個別使用者重新導向會強制將 HKCR 的任何寫入重新導向至 HKEY_CURRENT_USER (HKCU)。 如果關閉每個使用者重新導向,它可能會在程式嘗試寫入 HKCR 時導致專案建置錯誤 PRJ0050

其他程式庫目錄

允許使用者覆寫環境的程式庫路徑。 (/LIBPATH:folder)

指定是否要連結由相依專案所產生的 .lib 檔案。 一般而言,您會想連結 .lib 檔案,但這可能不適用於特定 DLL 的情況。

您也可以提供檔案名與相對路徑來指定 .obj 檔案,例如 ..\..\MyLibProject\MyObjFile.obj。 如果 .obj 檔案的原始程式碼含有 #include 代表先行編譯標頭檔,例如 pch.h,則 pch.obj 檔案位於與 MyObjFile.obj 相同的資料夾中。 您還必須新增 pch.obj 作為額外的相依性。

使用程式庫相依性輸入

指定連結專案相依性的程式庫輸出時,是否使用封存工具的輸入而非程式庫檔案本身。 在大型專案中,當相依專案產生 .lib 檔時,會停用累加連結。 如果有許多相依專案產生 .lib 檔,建置應用程式可能會花很長的時間。 當這個屬性設定為 [是],專案系統會針對相依專案所產生的 .lib 檔連結 .obj 檔案,以啟用累加連結。

如需如何存取 [一般] 連結器屬性頁的詳細資訊,請參閱設定編譯器及組建屬性

指定連結器是否應顯示進度指示器,以顯示連結完成的百分比。 預設為不顯示這項狀態資訊。 (/LTCG:STATUS|LTCG:NOSTATUS)

阻止 DLL 繫結

/ALLOWBIND:NO 會設定 DLL 標頭中的一個位元,指出不允許繫結映像的 Bind.exe。 如果 DLL 已數位簽署,您便可能不想要繫結 DLL (繫結會使簽章無效)。

將連結器警告視為錯誤

/WX 會導致在連結器產生警告時,不會產生任何輸出檔。

強制檔案輸出

/FORCE 選項會告知連結器,即使參考到未定義 (UNRESOLVED) 或多次定義 (MULTIPLE) 的符號,也要建立 .exe 檔案或 DLL。 它可能會建立無效的 .exe 檔案。

Choices

  • 已啟用 - /FORCE且不使用任何引數表示 /FORCE:MULTIPLE/FORCE:UNRESOLVED
  • 僅限多個已定義的符號 - 使用 /FORCE:MULTIPLE 來建立輸出檔,即使 LINK 找到一個以上的符號定義也一樣。
  • 僅限未定義的符號 - 使用 /FORCE:UNRESOLVED 來建立輸出檔,不論 LINK 是否找到未定義的符號。 如果無法解析進入點符號,則會忽略 /FORCE:UNRESOLVED

建立熱修補映像

準備映像進行 Hotpatch。

Choices

  • 已啟用 - 準備映像進行熱修補。
  • 僅限 X86 映像 - 準備 X86 映像進行熱修補。
  • 僅限 X64 映像 - 準備 X64 映像進行熱修補。
  • 僅限 Itanium 映像 - 準備 Itanium 映像進行熱修補。

指定區段屬性

/SECTION 選項會變更區段的屬性,覆寫編譯 .obj 檔案的該區段時所設定的屬性。

輸入屬性頁

其他相依性

指定要新增至連結命令列的額外相依性項目,例如 kernel32.lib

忽略所有預設程式庫

/NODEFAULTLIB 選項會告知連結器在解析外部參考時,從搜尋的程式庫清單中移除一或多個預設程式庫。

忽略特定的預設程式庫

指定要忽略的一或多個預設程式庫名稱。 使用分號分隔多個程式庫。 (/NODEFAULTLIB:[name, name, ...])

模組定義檔

/DEF 選項會將模組定義檔 (.def) 傳遞至連結器。 只有一個 .def 檔案可以指定給 LINK。

將模組新增至組件

/ASSEMBLYMODULE 選項可讓您將模組參考新增至組件。 模組中的類型資訊不適用於新增模組參考的組件程式。 不過,模組中的類型資訊可供參考該組件的任何程式使用。

內嵌受控資源檔

/ASSEMBLYRESOURCE 在輸出檔中內嵌資源檔。

強制符號參考

/INCLUDE 選項會告知連結器,將指定的符號新增到符號表。

延遲載入的 DLL

/DELAYLOAD 選項會導致延遲載入 DLL。 dll 名稱指定要延遲載入的 DLL。

/ASSEMBLYLINKRESOURCE 選項會在輸出檔中建立 .NET Framework 資源連結。 連接器不會將資源檔放在輸出檔中。

資訊清單檔屬性頁

產生資訊清單

/MANIFEST 指定連結器應建立並排資訊清單檔。

資訊清單檔

/MANIFESTFILE 可讓您變更資訊清單檔的預設名稱。 資訊清單檔的預設名稱是附加 .manifest 的檔案名稱。

其他資訊清單相依性

/MANIFESTDEPENDENCY 可讓您指定要放入資訊清單檔相依性區段中的屬性。

允許隔離

指定資訊清單查閱的行為。 (/ALLOWISOLATION:NO)

啟用使用者帳戶控制 (UAC)

指定是否啟用使用者帳戶控制。 (/MANIFESTUAC, /MANIFESTUAC:NO)

UAC 執行層級

指定在使用使用者帳戶控制執行時,應用程式要求的執行層級。 (/MANIFESTUAC:level=[value])

Choices

  • asInvoker - UAC 執行層級:作為叫用者。
  • highestAvailable - UAC 執行層級:最高可用。
  • requireAdministrator - UAC 執行層級:需要系統管理員。

UAC 略過 UI 保護

指定是否要略過桌面上其他視窗的使用者介面保護層級。 將此屬性設定為 [是],僅適用於協助工具應用程式。 (/MANIFESTUAC:uiAccess=[true | false])

偵錯屬性頁

產生偵錯資訊

此選項可讓您建立 .exe 檔案或 DLL 的偵錯資訊。

Choices

  • - 不產生偵錯資訊。
  • 產生偵錯資訊 - 建立完整的程式資料庫 (PDB),非常適合散發至 Microsoft 符號伺服器。
  • 產生最佳化偵錯資訊建立更快速的連結 - 產生最適合快速編輯連結偵錯循環的程式資料庫 (PDB)。
  • 產生適用於分享和發佈的最佳化偵錯資訊 - 產生最適合分享編輯連結偵錯循環的程式資料庫 (PDB)。

產生程式資料庫檔案

根據預設,指定 /DEBUG 時,連接器會建立程式資料庫 (PDB),以保存偵錯資訊。 PDB 的預設檔案名稱含有該程式的基底名稱和副檔名 .pdb

移除專用符號

當您以任何會產生 PDB 檔的編譯器或連結器選項 (/DEBUG/Z7/Zd/Zi) 建置程式映像時,/PDBSTRIPPED 選項就會建立第二個程式資料庫 (PDB) 檔案。

產生對應檔案

/MAP 選項會告知連結器建立對應檔。

對應檔案名稱

對應檔的使用者指定名稱。 它會取代預設名稱。

對應匯出

/MAPINFO 選項會告知連結器在對應檔中包含指定的資訊 (該對應檔會在您指定 /MAP 選項時建立)。 EXPORTS 會告知連結器包含匯出的函式。

可偵錯的組件

/ASSEMBLYDEBUG 發出含有偵錯資訊追蹤的 DebuggableAttribute 屬性,並停用 JIT 最佳化。

系統屬性頁

SubSystem

/SUBSYSTEM 選項會告知作業系統如何執行 .exe 檔案。 子系統的選擇會影響連結器選擇的進入點符號 (或進入點函式)。

Choices

  • 未設定 - 未設定子系統。
  • 主控台 - Win32 字元模式應用程式。 主控台應用程式是由作業系統指定的主控台。 如果已定義 mainwmain,則 CONSOLE 為預設值。
  • Windows - 應用程式不需要主控台,可能是因為它會建立自己的視窗,與使用者進行互動。 如果已定義 WinMainwWinMain,則 WINDOWS 為預設值。
  • 原生 - Windows NT 的裝置驅動程式。 如果已指定 /DRIVER:WDM,則 NATIVE 為預設值。
  • EFI 應用程式 - EFI 應用程式。
  • EFI 開機服務驅動程式 - EFI 開機服務驅動程式。
  • EFI ROM - EFI ROM。
  • EFI 執行階段 - EFI 執行階段。
  • POSIX - 在 Windows NT 中以 POSIX 子系統執行的應用程式。

最小必要版本

指定子系統的最小必要版本。 引數為範圍從 0 到 65535 的十進位數字。

堆積保留大小

指定虛擬記憶體中的堆積配置大小總計。 預設值是 1 MB。 (/HEAP:reserve)

堆積認可大小

指定實體記憶體中的堆積配置大小總計。 預設值是 4 KB。 ([/HEAP:reserve,commit](heap-set-heap-size.md))

堆疊保留大小

指定虛擬記憶體中的堆疊配置大小總和。 預設值是 1 MB。 (/STACK:reserve)

堆疊認可大小

指定實體記憶體中的堆疊配置大小總計。 預設值是 4 KB。 (/STACK:reserve,commit)

啟用大型位址

/LARGEADDRESSAWARE 選項會告知連結器,應用程式可以處理大於 2 GB 的位址。 根據預設,如果 /LARGEADDRESSAWARE 未在連結器行上指定,則會啟用 /LARGEADDRESSAWARE:NO

Terminal Server

/TSAWARE 選項會在程式映像選用標頭的 IMAGE_OPTIONAL_HEADERDllCharacteristics 欄位中設定旗標。 設定此旗標時,終端機伺服器將不會對應用程式進行某些變更。

從 CD 交換執行

/SWAPRUN 選項會告知作業系統要先將連結器輸出複製到交換檔,然後從該處執行映像。 此選項是 Windows NT 4.0 (及更新版本) 功能。 指定 CD 時,作業系統會將抽取式磁碟上的映像複製到分頁檔,然後載入該映像。

從網路交換執行

/SWAPRUN 選項會告知作業系統要先將連結器輸出複製到交換檔,然後從該處執行映像。 此選項是 Windows NT 4.0 (及更新版本) 功能。 如果已指定 NET,作業系統會先將二進位映像從網路複製到交換檔,然後從該處載入映像。 這個選項適用於透過網路執行應用程式。

驅動程式

使用 /DRIVER 連結器選項來建置 Windows NT 核心模式驅動程式。

Choices

  • 未設定 - 預設驅動程式設定。
  • 驅動程式 - 驅動程式
  • 僅限 UP - /DRIVER:UPONLY 會讓連結器將 IMAGE_FILE_UP_SYSTEM_ONLY 位元新增至輸出標頭中的特性,以指定它是單一處理器 (UP) 驅動程式。 作業系統會拒絕在多處理器 (MP) 系統上載入 UP 驅動程式。
  • WDM/DRIVER:WDM - 會導致連結器在選用標頭的 DllCharacteristics 欄位中設定 IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 位元。

最佳化屬性頁

參考資料

/OPT:REF 會排除從未參考的函式和/或資料,而 /OPT:NOREF 會保留從未參考的函式和/或資料。

啟用 COMDAT 摺疊

使用 /OPT:ICF[=iterations] 以執行相同的 COMDAT 摺疊。

函式順序

/ORDER 選項會告知 LINK 將特定 COMDAT依照預先決定的順序放入映像中,以最佳化程式。 LINK 在該映像的每個區段中,依照指定順序放置函式。

設定檔指引資料庫

指定 .pgd 檔案以進行設定檔指引最佳化。 (/PGD)

指定連結時產生程式碼。 (/LTCG)

Choices

  • 預設值 - 預設 LTCG 設定。
  • 使用快速連結時間產生程式碼 - 使用連結時產生程式碼搭配 /FASTGENPROFILE
  • 使用連結時產生程式碼 - 使用連結時產生程式碼
  • 設定檔指引最佳化 - 檢測 - 使用設定檔指引最佳化搭配 :PGINSTRUMENT
  • 設定檔指引最佳化 - 最佳化 - 指定連結器應使用執行已檢測二進位檔之後所建立的設定檔資料來建立最佳化的映像。
  • 設定檔指引最佳化 - 更新 - 允許和追蹤新增或修改 :PGINSTRUMENT 階段中指定的輸入檔案清單。

內嵌 IDL 屬性頁

MIDL 命令

指定 MIDL 命令列選項。 (/MIDL:@responsefile)

忽略內嵌 IDL

/IGNOREIDL 選項會指定不應將原始程式碼中的任何 IDL 屬性處理到 .idl 檔案中。

合併的 IDL 基底檔案名稱

/IDLOUT 選項會指定 .idl 檔案的名稱和副檔名。

型別程式庫

/TLBOUT 選項會指定 .tlb 檔案的名稱和副檔名。

TypeLib 資源識別碼

可讓您指定連結器產生的型別程式庫資源識別碼。 (/TLBID:id)

Windows 中繼資料屬性頁

產生 Windows 中繼資料

啟用或停用產生 Windows 中繼資料。

Choices

  • - 啟用產生 Windows 中繼資料檔案。
  • - 停用產生 Windows 中繼資料檔案。

Windows 中繼資料檔案

/WINMDFILE 選項切換。

Windows 中繼資料金鑰檔案

指定簽署 Windows 中繼資料的金鑰或金鑰組。 (/WINMDKEYFILE:filename)

Windows 中繼資料金鑰容器

指定簽署 Windows 中繼資料的金鑰容器。 (/WINMDKEYCONTAINER:name)

Windows 中繼資料延遲簽署

部分簽署 Windows 中繼資料。 如果您只想將公開金鑰放在 Windows 中繼資料中,請使用 /WINMDDELAYSIGN。 預設值為 /WINMDDELAYSIGN:NO

進階屬性頁

進入點

[/ENTRY](entry-entry-point-symbol.md) 選項指定進入點函式作為 .exe 檔案或 DLL 的開始位址。

無進入點

建立僅限資源 DLL 時需要使用 /NOENTRY 選項。 使用此選項可防止 LINK 將 _main 的參考連結到 DLL 中。

設定總和檢查碼

/RELEASE 選項會在 .exe 檔案的標頭中設定總和檢查碼。

基底位址

設定程式的基底位址。 (/BASE:{address[,size] | @filename,key})

隨機基底位址

隨機基底位址。 (/DYNAMICBASE[:NO])

固定基底位址

建立僅可在其慣用基底位址載入的程式。 (/FIXED[:NO])

資料執行防止 (DEP)

將可執行檔標記為已測試與 Windows 資料執行防止功能相容。 (/NXCOMPAT[:NO])

關閉產生組件

/NOASSEMBLY 選項會告知連結器,在不使用 .NET Framework 組件的情況下建立目前輸出檔的映像。

Unload 延遲載入 DLL

UNLOAD 限定詞會告知延遲載入 Helper 函式,支援明確卸載 DLL。 (/DELAY:UNLOAD)

Nobind 延遲載入 DLL

NOBIND 選項會告知連結器不要在最終映像中包含可繫結的匯入位址表 (IAT)。 預設會是針對延遲載入 DLL 建立可繫結 IAT。 (/DELAY:NOBIND)

匯入程式庫

覆寫預設匯入程式庫名稱。 (/IMPLIB:filename)

合併區段

/MERGE 選項會將第一個區段與第二個區段合併,並指定第二個區段名稱作為產生的區段名稱。 例如,/merge:.rdata=.text 合併 .rdata 區段與 .text 區段,並將合併區段命名為 .text

目標電腦

/MACHINE 選項會指定程式的目標平台。

Choices

  • 未設定
  • MachineARM
  • MachineARM64
  • MachineEBC
  • MachineIA64
  • MachineMIPS
  • MachineMIPS16
  • MachineMIPSFPU
  • MachineMIPSFPU16
  • MachineSH4
  • MachineTHUMB
  • MachineX64
  • MachineX86

設定檔

產生可與效能工具分析工具搭配使用的輸出檔。 需要將產生偵錯資訊屬性設定為 GenerateDebugInformation (/DEBUG)。 (/PROFILE)

CLR 執行緒屬性

明確指定 CLR 程式進入點的執行緒屬性。

Choices

  • MTA 執行緒屬性 - 將 MTAThreadAttribute 屬性套用到程式的進入點。
  • STA 執行緒屬性 - 將 STAThreadAttribute 屬性套用到程式的進入點。
  • 預設執行緒屬性 - 與未指定 /CLRTHREADATTRIBUTE 相同。 讓通用語言執行平台 (CLR) 設定預設執行緒屬性。

CLR 映像類型

設定 CLR 映像的類型 (IJW、純或安全)。

Choices

  • 強制執行 IJW 映像
  • 強制執行純 IL 映像
  • 強制執行安全 IL 映像
  • 預設映像類型

金鑰檔

指定簽署組件的金鑰或金鑰組。 (/KEYFILE:filename)

金鑰容器

指定簽署組件的金鑰容器。 (/KEYCONTAINER:name)

延遲簽署

部分簽署組件。 若您只想在組件中放入公開金鑰,請使用 /DELAYSIGN。 預設值為 /DELAYSIGN:NO

CLR 非受控程式碼檢查

/CLRUNMANAGEDCODECHECK 指定連結器是否會將 SuppressUnmanagedCodeSecurityAttribute 套用至連結器產生的 P/Invoke 呼叫 (從受控程式碼呼叫原生 DLL)。

錯誤報告

可讓您直接提供內部編譯器錯誤 (ICE) 資訊給 Visual Studio C++ 團隊。

Choices

  • PromptImmediately - 立即提示。
  • 下一次登入的佇列 - 下一次登入的佇列。
  • 傳送錯誤報告 - 傳送錯誤報告。
  • 沒有錯誤報告 - 沒有錯誤報告。

SectionAlignment

/ALIGN 選項指定程式線性位址空間內每個區段的對應儲存方式。 數字引數以位元組為單位,而且必須是二的次方。

保留 PInvoke 呼叫的最後一個錯誤碼

/CLRSUPPORTLASTERROR,預設為開啟,會保留透過 P/Invoke 機制所呼叫函式的最後一個錯誤碼,這可讓您從 /clr 編譯的程式碼中呼叫 DLL 中的原生函式。

Choices

  • 已啟用 - 啟用 /CLRSupportLastError
  • 已停用 - 停用 /CLRSupportLastError
  • 僅限系統 DLL - 僅針對系統 DLL 啟用 /CLRSupportLastError

映像擁有安全例外狀況處理常式

指定 /SAFESEH 時,連結器只有在它也可以產生映像安全例外狀況處理常式的資料表時,才會產生該映像。 此資料表指定在該作業系統中,該映像有效的例外狀況處理常式。