据微软的源,也有一些硬大小限制到ILK的大小,但它确实改变在一定程度上与VS版本和操作系统环境:
- VS2005具有的ILK文件限制如果与
/3GB
option used,或
- 一个768MB限制上一个Win32操作系统上运行,如果你在运行256MB
- VS2008拥有256MB的对一只股票的Win32操作系统的ILK文件的限制,或
来源:This MS Connect incident record,其中也提到了一些缺点,使用你可能要考虑/3GB
。
既然你是一个Win64的操作系统(根据您的评论)上运行,我认为你可能得到最大的ILK文件大小限制。 /3GB
选项仅适用于32位操作系统安装 - 在WoW64下运行32位“大地址感知”应用程序可获得完整的4GB地址空间 - 不需要/3GB
选项。
别急 - 我有一个想法(可能是轻率的想法)。我不知道这是否会实际工作,解决你正在运行到增量链接的问题,即使是这样,它仍然可能不会,因为它可能是一个很大的麻烦,尤其是维护明智值得:
您可能想了解使用x64本机链接器是否可以解决该问题 - 如果您安装了x64编译器选项,VS将为x86/x64目标和x86/x64主机平台的各种组合安装多组编译器/链接工具。就编译器而言,要生成x86代码,只有一个Win32编译器,但为了生成x64代码,同时存在Win64编译器和Win32'交叉编译器'工具链。然而,对于链接器来说,任何一个链接器(Win32或Win64--链接器的“交叉”版本只是Win32版本的副本)都可以生成x86或x64目标。
如果本机Win64链接程序可以处理比原生Win32链接程序更大的ILK文件,那么它并不会让我感到意外,所以如果您当前的构建过程使用Win32(或Win32'cross' )工具。
如果您的目标是x64,请确保您的构建过程使用VC\bin\amd64
中的本机x64工具,而不是VC\bin\x86_amd64
中的交叉工具。如果您正在使用常规VS IDE C++项目进行构建,则可能必须切换到makefile项目以强制使用本机x64工具。
如果您的目标是x86,则情况可能会有点棘手 - 编译阶段需要使用VC\bin
中的x86工具,但在链接阶段,您需要使用x64本机链接器在VC\bin\amd64
。指定/machine:x86
选项并确保将lib搜索路径设置为查找x86库而不是x64库。这起作用 - 至少对于一个小测试程序。但我喜欢我说的,我不知道它是否真的有助于解决您遇到的增量链接问题,或者即使它遇到麻烦也是值得的。
不幸的是`/ 3G`启动开关不支持我的操作系统(Windows 7 64位)。有没有其他方法可以增加ILK尺寸? – 2011-12-13 22:31:00