为什么在Visual Studio编译C++项目时会出现致命错误"LNK1104: 无法打开文件'C:\Program.obj'"?

134

我在Visual Studio 2008中创建了一个新的C++项目,目前还没有编写任何代码,只改变了项目设置。

当我编译该项目时,我收到以下致命错误:

致命错误 LNK1104: 无法打开文件'C:\Program.obj'

27个回答

2
我曾经遇到过类似的问题。我通过以下命令解决了正在运行的任务:

taskkill /f /im [nameOfExe]

/f: 强制关闭任务。 /im: 下一个参数是图像名称,也就是可执行文件的名称,例如 Program.exe。


2

在我的情况下,它是路径长度(包括文件名)。

..\..\..\..\..\..\..\SWX\Binary\VS2008\Output\Win32\Debug\boost_unit_test_framework-vc90-mt-gd-1_57.lib;

关于发布,路径为(已成功工作):
..\..\..\..\..\..\..\SWX\Binary\VS2008\Output\Win32\Release\boost_unit_test_framework-vc90-mt-1_57.lib;

==> 短一字符。

  1. 我通过将lib文件重命名(使用较短的名称)并更改以下内容进行了验证

链接器 -> 输入 -> 附加依赖项

  1. 我还通过添加绝对路径而不是相对路径进行了验证,因为所有这些“..”也扩展了路径字符串。 这也有效。

所以对我来说问题是路径+文件名字符串的总大小太长了!


+1,要注意的是,在复杂的工具链开始在嵌套良好的项目文件夹内创建临时目录中生成临时文件时,可能会轻易达到260个字符的Windows路径长度限制。 - Boston Walker

1
对于一个汇编项目(项目名称 -> 构建依赖项 -> 构建自定义 -> masm(已选择)),将生成预处理源清单设置为True也会给我带来问题,清除该设置后问题得到解决。这里使用的是VS2013。

1

1
我遇到了链接器抱怨主可执行文件缺失的相同问题。这发生在我们将解决方案迁移到新的Visual Studio 2013时。该解决方案是托管和非托管项目/代码的多样混合体。问题(和解决方法)最终是在解决方案文件夹中缺少了一个app.config文件。花了一天时间才弄清楚这个问题:(,因为输出日志没有什么帮助。

0

我尝试了上面的解决方案,但对我没有用。 所以我重命名了exe并重新构建了解决方案。 这对我有用。


0
我通过将一个现有项目添加到我的解决方案中来解决了这个问题,而我在第一次时忘记添加它。

0
在我的情况下,我用GLM替换了以前游戏引擎图形课程中的数学库文件。问题是,我没有将它们添加到Visual Studio解决方案资源管理器中的项目中(尽管它们在项目存储库中)。

0

我在处理LNK2038错误时遇到了这个问题,按照post中的方法将RELEASE和DEBUG DLLs分开。在此过程中,我清理了存放这些依赖项的整个文件夹。

幸运的是,我有所有这些文件的备份,并将导致此错误的文件放回DEBUG文件夹以解决问题。错误代码在某种程度上是误导性的,因为我不得不花费很多时间才能从这篇文章的答案中获得这个提示。

希望这个答案能帮助需要的人。


0
我回答是因为我没有看到其他人列出这个特定的解决方案。
显然,我的杀毒软件(Ad-Aware)正在标记一个我的项目依赖的DLL,并将其删除。即使排除了DLL所在的目录,相同的行为仍然持续,直到我重新启动计算机。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接