連結器屬性頁
下列屬性位於 [專案 > 屬性組態屬性 >> ] 連結器 底下。 如需連結器的詳細資訊,請參閱 CL 叫用連結器和 連結器選項 。
一般屬性頁
輸出檔案
選項 /OUT
會覆寫連結器所建立之程式的預設名稱和位置。
顯示進度
列印連結器進度訊息
Choices
- 未設定 - 無詳細資訊。
- 顯示所有進度訊息 - 顯示所有進度訊息。
- 針對 [ 已搜尋的程式庫 ] - 顯示進度訊息,指出只搜尋的程式庫。
- 關於優化連結期間的 COMDAT 折迭 - 顯示優化連結 期間 COMDAT 折迭的相關資訊。
- 關於優化連結 期間移除的資料 - 顯示優化連結期間所移除之函式和資料的相關資訊。
- 關於與 SEH 不相容的模組 - 顯示與保管庫例外狀況處理不相容的模組相關資訊。
- 關於與 Managed 程式碼 相關的連結器活動 - 顯示與 Managed 程式碼相關的連結器活動相關資訊。
版本
選項 /VERSION
會指示連結器將版本號碼放在 或 .dll
檔案的 .exe
標頭中。 使用 DUMPBIN /HEADERS
查看 的 OPTIONAL HEADER VALUES
映射版本欄位,以查看 的效果 /VERSION
。
啟用累加連結
啟用累加連結。 (/INCREMENTAL, /INCREMENTAL:NO
)
隱藏啟動橫幅
此選項 /NOLOGO
可防止顯示著作權訊息和版本號碼。
忽略匯入程式庫
這個屬性會告知連結器不要將此組建所產生的任何 .lib
輸出連結至任何相依專案。 它可讓專案系統處理 .dll
建置時不會產生檔案的 .lib
檔案。 如果專案相依于另一個產生 DLL 的專案,專案系統會自動連結 .lib
該子專案所產生的檔案。 產生 COM DLL 或僅限資源 DLL 的專案可能不需要此屬性,因為這些 DLL 沒有任何有意義的匯出。 如果 DLL 沒有匯出,連結器就不會產生 .lib
檔案。 如果沒有匯出 .lib
檔案,而且專案系統會告知連結器連結遺漏的 DLL,則連結會失敗。 請使用 [忽略匯入程式庫] 屬性來解決此問題。 當設定為 [ 是 ] 時,專案系統會忽略檔案是否存在 .lib
,並導致任何相依于此專案的專案不會與不存在 .lib
的檔案連結。
若要以程式設計方式存取此屬性,請參閱 IgnoreImportLibrary。
登錄輸出
在建置輸出上執行 regsvr32.exe /s $(TargetPath)
,這只適用于 .dll
專案。 對於 .exe
專案,會忽略這個屬性。 若要註冊 .exe
輸出,請在組態上設定後置事件,以執行註冊 .exe
檔案一律需要的自訂註冊。
若要以程式設計方式存取此屬性,請參閱 RegisterOutput。
個別使用者重新導向
在 Visual Studio 中註冊傳統上已在 (HKCR) 中 HKEY_CLASSES_ROOT
完成。 使用 Windows Vista 和更新版本的作業系統,若要存取 HKCR 您必須以提升權限模式執行 Visual Studio。 開發人員不一定會想要以提升許可權模式執行,但仍必須搭配註冊使用。 每個使用者重新導向可讓您註冊,而不需要以提升許可權模式執行。
每個使用者重新導向會強制將任何寫入 HKCR 重新導向至 HKEY_CURRENT_USER
(HKCU)。 如果關閉每個使用者重新導向,它可能會在程式嘗試寫入 HKCR 時導致專案建置錯誤 PRJ0050。
其他程式庫目錄
允許使用者覆寫環境的程式庫路徑。 (/LIBPATH:folder
)
連結程式庫相依性
指定是否要連結 .lib
相依專案所產生的檔案。 一般而言,您想要在檔案中 .lib
連結,但某些 DLL 可能不是這種情況。
您也可以藉由提供檔案名和相對路徑來指定 .obj
檔案,例如 ..\..\MyLibProject\MyObjFile.obj
。 例如, pch.h
如果檔案的 .obj
原始程式碼具有 #include
先行編譯標頭的 ,則 pch.obj
檔案位於與 MyObjFile.obj
相同的資料夾中。 您也必須新增 pch.obj
為額外的相依性。
使用程式庫相依性輸入
指定在連結專案相依性程式庫輸出時,是否要使用程式庫工具的輸入,而不是程式庫檔案本身。 在大型專案中,當相依專案產生 .lib
檔案時,會停用累加連結。 如果有許多相依專案會產生 .lib
檔案,建置應用程式可能需要很長的時間。 當此屬性設定為 [是 ] 時,專案系統會在相依專案所產生的檔案 .lib
中 .obj
連結專案系統,以啟用累加連結。
如需如何存取 一般 連結器屬性頁的詳細資訊,請參閱 設定編譯器和建置屬性 。
連結狀態
指定連結器是否應該顯示進度指示器,顯示連結完成百分比。 預設值為不會顯示此狀態資訊。 (/LTCG:STATUS|LTCG:NOSTATUS
)
防止 DLL 系結
/ALLOWBIND:NO
會設定 DLL 標頭中的位,指出不允許系 Bind.exe
結映射。 如果 DLL 已數位簽署,您便可能不想要繫結 DLL (繫結會使簽章無效)。
將連結器警告視為錯誤
/WX
如果連結器產生警告,則不會產生任何輸出檔案。
強制檔案輸出
選項 /FORCE
會告知連結器建立 .exe
檔案或 DLL,即使參考符號但未定義 (), 或已定義多次 ( UNRESOLVED
MULTIPLE
)。 它可能會建立無效 .exe
的檔案。
Choices
- 啟用 -
/FORCE
時沒有引數表示/FORCE:MULTIPLE
和 。/FORCE:UNRESOLVED
- 僅 相乘定義的符號 - 即使 LINK 找到一個以上的符號定義,使用
/FORCE:MULTIPLE
來建立輸出檔案。 - 僅限 未定義的符號 - 使用
/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 執行層級:最高可用。
- require管理員istrator - UAC 執行層級:需要系統管理員。
UAC 略過 UI 保護
指定是否要略過桌面上其他視窗的使用者介面保護層級。 將此屬性設定為 [是] 僅適用于協助工具應用程式。 (/MANIFESTUAC:uiAccess=[true | false]
)
偵錯屬性頁
產生偵錯資訊
此選項可讓您建立檔案或 DLL 的偵錯資訊 .exe
。
Choices
- 否 - 不會產生偵錯資訊。
- 產生偵錯資訊 - 建立完整的程式資料庫 (PDB) 以散發至 Microsoft 符號伺服器。
- 產生針對更快速連結 優化的偵錯資訊 - 產生適合快速編輯連結偵錯週期的程式資料庫 (PDB)。
- 產生針對共用和發佈 優化的偵錯資訊 - 產生適用于共用編輯連結-偵錯迴圈的程式資料庫(PDB)。
產生程式資料庫檔案
根據預設,當指定 時 /DEBUG
,連結器會建立程式資料庫 (PDB), 以保存偵錯資訊。 PDB 的預設檔案名具有程式的基底名稱和副檔名 .pdb
。
等量私人符號
/PDBSTRIPPED
當您使用任何產生 PDB 檔案的編譯器或連結器選項來建置程式映射時,此選項會建立第二個程式資料庫 (PDB) 檔案。 /DEBUG
/Z7
/Zd
/Zi
產生對應檔案
選項 /MAP
會告知連結器建立地圖檔。
對應檔案名稱
地圖檔的使用者指定名稱。 它會取代預設名稱。
地圖匯出
選項 /MAPINFO
會告知連結器在 mapfile 中包含指定的資訊,如果您指定 選項,就會建立該 /MAP
資訊。 EXPORTS
告知連結器包含匯出的函式。
可偵錯的元件
/ASSEMBLYDEBUG
發出 DebuggableAttribute
具有偵錯資訊追蹤的屬性,並停用 JIT 優化。
系統屬性頁
SubSystem
選項 /SUBSYSTEM
會告知作業系統如何執行 .exe
檔案。 子系統的選擇會影響連結器將選擇的進入點符號(或進入點函式)。
Choices
- 未設定 - 未設定子系統。
- 主控台 - Win32 字元模式應用程式。 主控台應用程式是由作業系統提供的主控台。 如果
main
或wmain
已定義,CONSOLE
則為預設值。 - Windows - 應用程式不需要主控台,可能是因為它會建立自己的視窗來與使用者互動。 如果
WinMain
或wWinMain
已定義,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:NO
如果未 /LARGEADDRESSAWARE
在連結器行上指定 ,則會啟用 。
Terminal Server
選項會在 /TSAWARE
程式影像選擇性標頭的 欄位中設定旗標 IMAGE_OPTIONAL_HEADER
DllCharacteristics
。 設定此旗標時,終端機伺服器不會對應用程式進行特定變更。
從 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) 選項會將進入點函式指定為檔案或 DLL 的起始位址 .exe
。
沒有進入點
/NOENTRY
建立僅限資源的 DLL 需要選項。 使用此選項可防止 LINK 將 _main
的參考連結到 DLL 中。
設定總和檢查碼
選項 /RELEASE
會在檔案的 .exe
標頭中設定總和檢查碼。
基底位址
設定程式的基底位址。 (/BASE:{address[,size] | @filename,key}
)
隨機基底位址
隨機化基底位址。 (/DYNAMICBASE[:NO]
)
固定基底位址
建立僅可在其慣用基底位址載入的程式。 (/FIXED[:NO]
)
資料執行預防 (DEP)
將可執行檔標示為已測試為與 Windows 資料執行防止功能相容。 (/NXCOMPAT[:NO]
)
關閉元件產生
選項 /NOASSEMBLY
會指示連結器建立目前輸出檔案的映射,而沒有 .NET Framework 元件。
卸載載入延遲 DLL
UNLOAD
限定詞會告知延遲載入協助程式函式支援明確卸載 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
相同。 讓 Common Language Runtime (CLR) 設定預設執行緒屬性。
CLR 映射類型
設定 CLR 映像的類型 (IJW、純或安全)。
Choices
- 強制 IJW 影像
- 強制純 IL 映射
- 強制保管庫 IL 映射
- 預設影像類型
金鑰檔案
指定要簽署元件的金鑰或金鑰組。 (/KEYFILE:filename
)
金鑰容器
指定要簽署元件的金鑰容器。 (/KEYCONTAINER:name
)
延遲符號
部分簽署元件。 如果您只想要將公開金鑰放在元件中,請使用 /DELAYSIGN
。 預設值為 /DELAYSIGN:NO
。
CLR Unmanaged 程式碼檢查
/CLRUNMANAGEDCODECHECK
指定連結器是否會套用 SuppressUnmanagedCodeSecurityAttribute
至從 Managed 程式碼產生之 P/Invoke 呼叫到原生 DLL 的連結器。
錯誤報告
可讓您將內部編譯器錯誤 (ICE) 資訊直接提供給 Visual Studio C++ 小組。
Choices
- PromptImmediately - 立即提示。
- 佇列供下一次登入 - 下一次登入的佇列。
- 傳送錯誤報表 - 傳送錯誤報表。
- 沒有錯誤報表 - 沒有錯誤報表。
SectionAlignment
選項 /ALIGN
會指定程式線性位址空間內每個區段的對齊方式。 number 引數以位元組為單位,而且必須是兩個乘冪。
保留 PInvoke 呼叫的最後一個錯誤碼
/CLRSUPPORTLASTERROR
,預設為開啟,會保留透過 P/Invoke 機制呼叫之函式的最後一個錯誤碼,這可讓您從使用 /clr
編譯的程式碼呼叫 DLLS 中的原生函式。
Choices
- 已啟用 - 啟用
/CLRSupportLastError
。 - Disabled - 停用
/CLRSupportLastError
。 - 僅限 系統 DLL - 僅針對系統 DLL 啟用
/CLRSupportLastError
。
映射具有保管庫例外狀況處理常式
指定 時 /SAFESEH
,只有在連結器也能夠產生影像的安全例外狀況處理常式資料表時,才會產生影像。 下表指定作業系統的例外狀況處理常式對映射有效。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應