致命错误LNK1106:无效文件或磁盘已满:无法0x5A57BEBC



我在使用 Visual Studio 2008 时遇到了此错误,我在网络上找到了解决方案。但是我找不到如何配置link.exe.

如何在VS2008中设置linker.exe/expectedoutputsize:600000000选项?我在Linker部分的项目属性中搜索了,但找不到这个地方......我在解决方案和Visual Studio选项中进行了搜索。我找到了链接器.exe.config,但我不知道架构。

的问题不是磁盘空间,我有足够的磁盘空间。有什么帮助吗?

必须在Project Settings->Librarian->Command Line->Additional options:文本框中添加该选项。

很抱歉复活这个旧线程,但我昨天遇到了类似的问题,我的解决方案与我在网上找到的任何东西无关。这是出现的第一个SO帖子,所以我想我会做出贡献,以防有人遇到同样的问题。

以下是我遇到问题的方式:

我最初有一个创建 exe 的项目:

  • MyProject.vcxproj -> MyProject.exe

然后,我通过将 main.cpp 拆分为一个单独的.exe项目,将原始项目转换为 .lib 项目。我将 exe 项目的目标名称设置为与 lib 相同,这样我们就不会更改可执行文件名称。我还添加了一个不同的.exe项目,该项目使用该库,但主项目略有不同.cpp

  • MyProject.vcxproj -> MyProject.lib
  • MyProjectVariant1.vcxproj -> MyProject.exe
  • MyProjectVariant2.vcxproj -> MyProjectVariant2.exe

按照我们解决方案目前的布局方式,所有项目都将其目标转储到同一个输出目录中。

问题是 .lib 和 first .exe共享相同的目标名称,因此任何辅助文件(pdb 文件、iobj、ipdb 等)都会被覆盖。MyProject.exe 会在 MyProject.lib 中链接之前覆盖这些辅助文件。

结论:

我通过为第一个变体使用唯一的目标名称来"修复"问题。我们还将审查我们的构建策略,看看我们是否应该为每个项目使用不同的输出目录,而不是将它们全部放在同一个位置。给他们不同的目标目录似乎更合乎逻辑。

最新更新