【问题标题】:Visual Studio gives an incorrect "fatal error LNK1107: invalid or corrupt file" for large static libraries in Release buildsVisual Studio 为发布版本中的大型静态库提供了不正确的“致命错误 LNK1107:文件无效或损坏”
【发布时间】:2019-08-12 22:17:59
【问题描述】:

在发布模式下,Visual Studio 2015 给我一个关于损坏的静态库文件的错误,而在调试模式下却没有。我仔细比较了每种模式的设置,没有发现任何我认为会导致这种情况的差异。

这是实际的错误: C:\repositories\svn\code\Main\Libraries\WindowLib\x64\Release\WindowLib.lib :致命错误 LNK1107:无效或损坏的文件:无法读取 0x37F5C5C

我在网上找到的所有内容似乎都表明此错误源于意外链接到 .dll 而不是静态库,或者 .lib 文件已损坏。

该文件绝对不是 .dll - 因此所有关于它作为解决方案的问题/答案都不适用。

至于它已损坏,我不确定 Visual Studio 为何或如何创建损坏的静态库文件。我已经在 2 台不同的计算机上多次尝试过,并且错误是一致的。这似乎并不表示文件损坏。

由于这个完全相同的设置过去可以正常工作,我倾向于认为这与静态库文件的大小(刚刚超过 2 GB)有关。然而:

1) 调试模式下构建的静态 .lib 文件较大(3.5 GB),链接也很好。

2) 我没有看到任何对文件大小的引用导致这种类型的 错误(Visual Studio 似乎报告了更像“我不能 当文件太多时,请归档此文件”或“我无法打开此文件” 大)。

3) 我在发布模式下仔细实现了 Visual Studio 调试模式中的所有设置,这些设置似乎有助于解决文件大小问题。

【问题讨论】:

    标签: visual-c++ visual-studio-2015 linker static-libraries lib


    【解决方案1】:

    以防万一这对其他人有帮助...

    这似乎确实是 Visual Studio 2015 的 x64 链接器中的一个错误。

    我更改了我的代码以创建 2 个静态库文件,而不是 1 个,每个文件的大小约为一半。之后,我得到了两个 .lib 文件,每个文件大约 1.2 GB。我没有更改 Visual Studio 项目的任何其他设置。

    然后发布版本链接正常,因为调试版本一直在做。

    我想不出任何解释为什么调试版本可以链接 3.5 GB 文件,而发布版本甚至不能链接 2.4 GB,除了链接器代码中的故障。

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2020-03-06
      • 1970-01-01
      • 2023-03-13
      • 2017-12-19
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多