Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537044
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类:

2011-05-19 15:07:37

/BASE(基址)

Visual Studio 2005

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

/BASE 选项设置程序的基址,重写 .exe 文件(在 0x400000 处)或 DLL(在 0x10000000 处)的默认位置。操作系统首先尝试在程序的指定或默认基址加载程序。如果该基址处没有足够的空间可用,则系统将重定位程序。若要防止重定位,请使用 选项。

如果 address 不是 64K 的倍数,链接器将发出错误。您可以选择指定程序的大小,以便链接器在程序超过您指定的大小时发出警告。

在命令行上,另一种指定基址的方法是在文件中使用前面有 at 符 (@) 的 filename 以及 keyfilename 是包含程序将使用的所有 DLL 的位置和大小的文本文件。链接器在指定的路径中查找 filename如果没有指定路径,则在 LIB 环境变量中指定的目录中查找。filename中的每一行表示一个 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 在地址空间中不重叠,可以减少分页并提高程序性能。

设置基址的另一种方法是在 或 语句中使用 BASE 参数。将 /BASE 和 选项连用等效于 LIBRARY 语句。

在 Visual Studio 开发环境中设置此链接器选项

  1. 打开此项目的“属性页”对话框。有关详细信息,请参见。

  2. 单击“链接器”文件夹。

  3. 单击“高级”属性页。

  4. 修改“基址”属性。

以编程方式设置此链接器选项

  • 请参见 。


参考


阅读(1308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~