【问题标题】:Link failure with either abnormal memory consumption or LNK1106 in Visual Studio 2005在 Visual Studio 2005 中出现异常内存消耗或 LNK1106 的链接失败
【发布时间】:2010-04-02 16:21:47
【问题描述】:

我正在尝试在 Visual Studio 2005 中为 Windows XP 构建一个解决方案。该解决方案包含 81 个项目(静态库、exe、dll),并且正在被我们的合作伙伴成功使用。我从他们的存储库中复制了解决方案包,并尝试在我们组中 3 台类似的机器上设置它。我在两台机器上都成功了,但解决方案无法在我的机器上构建。

在我的机器上构建遇到了两个问题:

  1. 在简单构建期间,最大静态库(在调试模式下约为 522Mb)的创建将失败并显示消息“13>libd\ui1d.lib:致命错误 LNK1106:无效文件或磁盘已满:无法查找0x20101879"

  2. 完整的解决方案重建会创建此库,但是在将库链接到主 .exe 文件时,devenv.exe 会生成 link.exe,它消耗大约 80Mb 的物理内存和 250MB 的虚拟内存并生成另一个链接。 exe,它的作用相同。这种情况一直持续到系统内存不足。在我同事的可以成功构建的 PC 上,只有一个 link.exe 进程使用了​​链接所需的所有内存(大约 500Mb 物理内存)。

我的机器上有足够的硬盘空间,文件系统是 NTFS。

我们的所有三个系统都相似 - Core2Quad 处理器、4Gb RAM、Windows XP SP3。我们正在使用从同一来源安装的 Visual Studio。

我尝试使用不同的 RAM 和 CPU,使用专用图形适配器来消除影响构建的视频内存共享的可能性,将解决方案文件放在不同的位置,使用不同版本的 VS 2005(专业版、标准版和团队套件),更改可用虚拟内存的数量,运行 memtest86 并从头开始构建项目(即干净的包)。

我已阅读what MSDN says about LNK1106,除了可能“堆空间不足”之外,没有其他情况适用于我,但是我不确定我应该如何解决这个问题。

我剩下的唯一想法是重新安装操作系统,但我不确定它是否会有所帮助,我不确定我的情况是否会在另一台机器上重演。

有人能给我什么建议吗?

谢谢

【问题讨论】:

    标签: visual-studio linker libraries


    【解决方案1】:

    是的,522 兆字节大约相当于可以在 32 位版本的 Windows 上分配的连续虚拟内存块。那是一个庞大的图书馆,你必须把它分开。

    您可以通过在 64 位版本的 Windows 上构建来推迟不可避免的事情,32 位程序可以获得更大的虚拟内存空间,接近 4 GB。

    【讨论】:

    • 你能解释一下吗?我认为 4GB 是可以在 32 位 Windows 上分配的最大连续内存块的大小。我错了吗?
    • @Corvin:4GB 是完整的 32 位地址空间大小。操作系统和内存映射设备占据上半部分。下半部分可用于任何用户程序,但包含代码和数据的混合。内存是从它们之间的未映射空间分配的。
    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2011-04-16
    • 2017-10-30
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多