Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 VisualStudio2008中的LNK1210_Visual Studio 2008_Linker_Chromium_Incremental Linking - Fatal编程技术网

Visual studio 2008 VisualStudio2008中的LNK1210

Visual studio 2008 VisualStudio2008中的LNK1210,visual-studio-2008,linker,chromium,incremental-linking,Visual Studio 2008,Linker,Chromium,Incremental Linking,我在链接Chromium项目时收到以下错误: Linking... LINK.EXE.SUPALINK_ORIG : ..\build\Debug\chrome.dll not found or not built by the last incremental link; performing full link Creating library ..\build\Debug\lib\chrome_dll.lib and object ..\build\Debug\lib\chrome_

我在链接Chromium项目时收到以下错误:

Linking...
LINK.EXE.SUPALINK_ORIG : ..\build\Debug\chrome.dll not found or not built by the last incremental link; performing full link
   Creating library ..\build\Debug\lib\chrome_dll.lib and object ..\build\Debug\lib\chrome_dll.exp
LINK.EXE.SUPALINK_ORIG : fatal error LNK1210: exceeded internal ILK size limit; link with /INCREMENTAL:NO
VS2005有一个新版本。不知何故,这是奇怪的,因为链接器已经做了完整的链接。设置
/INCREMENTAL:NO
时,链接成功,但禁用了增量链接


有没有办法增加ILK大小限制以启用增量链接?

根据Microsoft的消息来源,ILK大小有一些硬大小限制,但它在一定程度上随VS版本和操作系统环境而变化:

  • VS2005的ILK文件限制为256MB
  • VS2008在库存Win32 OS上的ILK文件限制为256MB,或
    • 如果在具有或的Win32 OS上运行,则为384MB限制
    • 如果在Win64操作系统上运行,则为768MB限制
来源:,其中还提到了使用
/3GB
时可能需要考虑的一些缺点

由于您运行的是Win64操作系统(根据您的评论),我认为您可能获得了最大的ILK文件大小限制。
/3GB
选项仅适用于32位操作系统安装-在WoW64下运行时,32位“大地址感知”应用程序可获得完整的4GB地址空间-无需使用
/3GB
选项

但是等等,我有个主意(可能是个愚蠢的主意)。我不知道这是否真的能解决您遇到的增量链接问题,即使这样,也可能不值得,因为这可能会带来很多麻烦,尤其是在维护方面:

您可能希望了解使用x64本机链接器是否可以解决此问题-如果安装x64编译器选项,VS将为x86/x64目标和x86/x64主机平台的各种组合安装多组编译器/链接工具。就编译器而言,生成x86代码只有Win32编译器,但生成x64代码既有Win32编译器,也有Win32“交叉编译器”工具链。但是,对于链接器而言,似乎任何一个链接器(Win32或Win32-链接器的“交叉”版本只是Win32版本的副本)都可以生成x86或x64目标

如果本机Win64链接器可以处理比本机Win32链接器更大的ILK文件,我不会感到太惊讶,因此如果您当前的构建过程正在使用Win32(或Win32“交叉”)工具,那么可能值得进行一次测试

如果您的目标是x64,请确保构建过程使用
VC\bin\amd64
中的原生x64工具,而不是
VC\bin\x86\u amd64
中的交叉工具。如果使用常规的IDE C++项目来构建,则可能需要切换到MaFaFILE项目以强制使用本机X64工具。
如果您的目标是x86,事情可能会有点棘手-编译阶段的构建需要使用
VC\bin
中的x86工具,但是对于链接阶段,您需要使用
VC\bin\amd64
中的x64本机链接器。指定
/machine:x86
选项,并确保已将库搜索路径设置为查找x86库而不是x64库。这是可行的——至少对于一个小的测试程序是如此。但正如我所说,我不知道它是否真的能帮助解决您遇到的增量链接问题,或者即使它真的有帮助,也不知道它是否值得麻烦。

不幸的是,我的操作系统(Windows 7 64位)不支持启动开关。有没有其他方法可以增加同类的大小?我想我引用的第一篇帖子可能会把一些信息弄混了,所以我更新了答案。不幸的是,如果您在64位操作系统上运行,我认为您可能达到了上限。但我也给出了一个很长的可能性的想法。谢谢你们提供的信息丰富的帖子。老实说,我已经用不同的方式解决了一个问题(将我的应用程序拆分为几个DLL,每个DLL都单独链接),因此这不再相关,但我从你的帖子中学到了很多——我将把它标记为一个答案。也许我以后会有时间-我会检查一下这是否也解决了ILK大小限制。看起来还有更多,至少对于MSVC 2015来说是这样。今天早上我开始遇到这个问题,但是我们的自动夜间构建没有。两个系统都是64位的,使用64位工具构建。啊哈!一位同事发现linker flag/MAXILKSIZE:0x7ff00000,它将ILK设置为尽可能大。这解决了MSVC2015的问题。