/BASE(基址)
/BASE:{address[,size] | @filename,key}
/BASE 选项设置程序的基址,重写 .exe 文件(在 0x400000 处)或 DLL(在 0x10000000 处)的默认位置。操作系统首先尝试在程序的指定或默认基址加载程序。如果该基址处没有足够的空间可用,则系统将重定位程序。若要防止重定位,请使用 /FIXED 选项。
如果 address 不是 64K 的倍数,链接器将发出错误。您可以选择指定程序的大小,以便链接器在程序超过您指定的大小时发出警告。
在命令行上,另一种指定基址的方法是在文件中使用前面有 at 符 (@) 的 filename 以及 key。文件名 是包含程序将使用的所有 DLL 的位置和大小的文本文件。链接器在指定的路径中查找文件名,如果没有指定路径,则在 LIB 环境变量中指定的目录中查找。文件名 中的每一行表示一个 DLL 并具有以下语法:
key address [size] ;comment
key 是字母数字字符串,不区分大小写。它通常是 DLL 的名称,但不必非是。key 后跟 C 语言、十六进制或十进制表示法的基址和可选的最大 size。所有三个参数由空格或制表符分隔。如果指定的 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 在地址空间中不重叠,可以减少分页并提高程序性能。
设置基址的另一种方法是在 NAME 或 LIBRARY 语句中使用 BASE 参数。将 /BASE 和 /DLL 选项连用等效于 LIBRARY 语句。
在 Visual Studio 开发环境中设置此链接器选项
打开项目的**“属性页”**对话框。有关详细信息,请参见设置 Visual C++ 项目属性。
单击“链接器”文件夹。
单击**“高级”**属性页。
修改“基址”属性。
以编程方式设置此链接器选项
- 请参见 BaseAddress。