【问题标题】:fatal error LNK1106: invalid file or disk full: cannot seek to 0x5A57BEBC致命错误 LNK1106:无效文件或磁盘已满:无法查找 0x5A57BEBC
【发布时间】:2013-09-09 16:18:08
【问题描述】:
我在使用 Visual Studio 2008 时遇到了这个错误,我在网上找到了解决方案 here 和 here。但是我不知道如何配置link.exe。
如何在VS2008 中为linker.exe 设置/expectedoutputsize:600000000 选项?我在 Linker 部分的项目属性中进行了搜索,但找不到该位置...我在解决方案和 Visual Studio 选项中进行了搜索。我找到了 linker.exe.config 但我不知道架构。
我的问题不是磁盘空间,我有足够的磁盘空间。有什么帮助吗?
【问题讨论】:
标签:
visual-c++
visual-studio-2008
configuration
linker
【解决方案1】:
该选项必须添加到Project Settings->Librarian->Command Line->Additional options: 文本框中。
【解决方案2】:
很抱歉复活这个旧帖子,但我昨天遇到了类似的问题,我的解决方案与我在网上找到的任何内容都无关。这是出现的第一个 SO 帖子,所以我想如果有人遇到同样的问题,我会做出贡献。
这是我遇到问题的方式:
我最初有一个创建 exe 的项目:
- MyProject.vcxproj -> MyProject.exe
然后,我通过将 main.cpp 拆分为单独的 .exe 项目,将原始项目转换为 .lib 项目。我将 exe 项目的目标名称设置为与 lib 相同,这样我们就不会更改可执行文件名称。我还添加了一个使用该库但 main.cpp 略有不同的不同 .exe 项目
- MyProject.vcxproj -> MyProject.lib
- MyProjectVariant1.vcxproj -> MyProject.exe
- MyProjectVariant2.vcxproj -> MyProjectVariant2.exe
我们的解决方案目前的布局方式是,所有项目都将其目标转储到同一个输出目录中。
问题在于 .lib 和第一个 .exe 共享相同的目标名称,因此任何辅助文件(pdb 文件、iobj、ipdb 等)都会被覆盖。 MyProject.exe 在链接到 MyProject.lib 之前会直接覆盖这些辅助文件。
结论:
我通过为第一个变体使用唯一的目标名称来“修复”了这个问题。我们还将审查我们的构建策略,看看我们是否应该为每个项目使用不同的输出目录,而不是将它们全部放在同一个位置。给他们不同的目标目录似乎更合乎逻辑。