建議使用 Visual Studio 2017

/BASE (基底位址)

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

/BASE:{address[,size] | @filename,key}  

/BASE 選項會設定程式的基底位址,覆寫 .exe 檔 (位於 0x400000) 或 DLL (位於 0x10000000) 的預設位置。 作業系統首先會嘗試在指定或預設的基底位址載入程式。 如果在那裡沒有足夠的空間,那麼系統便會重新配置該程式。 若要防止重新配置,請使用 /FIXED 選項。

此種連結器會在 address 不是 64K 的倍數時發出錯誤訊息。您可以選擇性地指定程式的大小,如果程式無法符合指定的大小,連結器就會發出警告。

另一種在命令列上指定基底位址的方式是,在檔案中使用前面加上 at 符號 (@) 的 filenamekeyfilename 是一個文字檔,含有程式要使用的所有 DLL 的位置和大小。 連結器會在指定的路徑或在 (如果沒有指定路徑) LIB 環境變數裡所指定的目錄中尋找 filenamefilename 中的每一行都代表一個 DLL 並且具有下列語法:

  
key address [size] ;comment  

key 是一個英數字元的字串而且不區分大小寫。 它通常是 DLL 的名稱,不過並非必須如此。 key 後面跟著一個以 C 語言、十六進位或十進位標記法表示的基底 address,以及選用性的最大 size。 這三個引數都是以空格或 Tab 字元分隔。 如果指定的 size 小於程式所需的虛擬位址空間,連結器便會發出警告。 comment 是以一個分號 (;) 指定,可以在同一行也可以在另一行。 連結器會忽略從分號開始到行尾的所有文字。 以下範例所示就是這類檔案的一部分:

main   0x00010000    0x08000000    ; for PROJECT.exe  
one    0x28000000    0x00100000    ; for DLLONE.DLL  
two    0x28100000    0x00300000    ; for DLLTWO.DLL  

假設含有這些行的檔案稱為 DLLS.txt,下列範例命令便會套用這項資訊:

link dlltwo.obj /dll /base:@dlls.txt,two  

您可以藉由指派基底位址讓 DLL 在位址空間中不會重疊,以減少分頁和增進程式的效能。

另一種設定基底位址的方式是使用 NAMELIBRARY 陳述式中的 BASE 引數。 /BASE 和 /DLL 選項合在一起就相當於 LIBRARY 陳述式。

若要在 Visual Studio 開發環境中設定這個連結器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱設定 Visual C++ 專案屬性

  2. 按一下 [連結器] 資料夾。

  3. 按一下 [進階] 屬性頁。

  4. 修改 [基底位址] 屬性。

若要以程式設計方式設定這個連結器選項

設定連結器選項
連結器選項

顯示: