在Visual Studio中编译C ++项目时,为什么会发生致命错误“ LNK1104:无法打开文件'C:\ Program.obj'”?


117

我在Visual Studio 2008中创建了一个新的C ++项目。仅项目设置已更改。

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

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

Answers:


153

此特定问题是由于指定对路径中带有空格的lib文件的依赖关系引起的。路径需要用引号引起来,才能正确编译项目。

在项目属性的“ 配置属性”->“链接器”->“输入”选项卡上,有一个“ 附加依赖项”属性。通过将以下属性更改为已解决此问题:

C:\ Program Files \ sofware sdk \ lib \ library.lib

至:

“ C:\ Program Files \ sofware sdk \ lib \ library.lib”

我在哪里加了引号。


17
天哪,您刚刚将追逐两天的bug追至30秒一:)
jb。

10
我有同样的问题。如果您的链接器正确,但您的lib目录设置不正确,则可能会出现相同的错误。尝试查看配置属性-> VC ++目录->库目录,以查看是否正确设置了库。有时,lib文件夹由x86和x64文件夹组成。您必须将其设置为其中一个(取决于您的编译器),而不是包含两者的文件夹。
M4st3rM13年

1
不要忘了在分号后面加上分号"C:\Program Files\sofware sdk\lib\library.lib"。缺少a ;也将导致项目无法正确编译。
roscioli 2014年

1
尝试使用Visual Studio 2005(在Windows 8.1上)构建OpenCV时遇到了此问题,并且此问题得以解决。大!
AlainD 2014年

1
我尝试了一下,但对我没用。 “ Qt5Xmld.lib”;“ Qt5XmlPatternsd.lib”;“ Qt5Cored.lib”;%(AdditionalDependencies)-我应该承担什么责任
STF'1

65

如果文件也仍在运行,则可能发生这种情况。

:-1:错误:LNK1104:无法打开文件'debug \ ****。exe'


4
这也是我的问题!
Kamran Bigdely 2014年

1
我认为这是由MS Security Essentials保持文件锁定引起的。
Synetech

是的,关闭上一个控制台窗口,然后突然可以读取lib。
卡里(Kari)

15

关闭并重新打开Visual Studio之后,该问题对我来说消失了。不知道为什么会发生问题,但这可能值得一试。

这是在VS 2013 Ultimate Windows 8.1上。


4
啊,微软...我们的第一个尝试应该总是关闭并重新打开(或关闭然后再打开)-当我们这样做时,一些神秘的错误就会消失...
Leonardo Alves Machado

1
我感到如此可耻,以至于该解决方案无法解决我的问题。现在,我再也不能出去见我的朋友和家人了。
javaLover

2
您和卡罗尔有同样的问题。
阿莫德

10

还要检查一下您是否没有打开它:配置属性-> C / C ++->预处理程序->预处理到文件


就我而言,这也是一个问题,但是,如果我希望打开此标志(以便查看“预设文件”),该怎么办?
Guy Avraham

2
您在这里有一些解决方法:如何输出预处理的代码并进行编译(Visual Studio),并且在这里:使用/ p参数(对文件进行预处理)编译项目(VS 2008)不会编译。但从本质上讲,这是一个编译器选项,因此它将执行任一操作,但不能同时执行。
阿萨夫·利维

4

我有同样的问题。它是由附加库路径的文件夹名称中的“,”引起的。它通过更改附加库路径来解决。



3

就我而言,这是一个误导的问题。项目引用了另一个项目的输出,但是后者没有在前者要查找的位置输出文件。


3

解决方案1(对于我而言):重新启动Windows资源管理器进程(是,Windows文件管理器)。

解决方案2:

  1. 关闭Visual Studio。Windows注销
  2. 登录,重新打开Visual Studio
  3. 像往常一样构建。现在,它可以生成并可以访问有问题的文件。

我认为有时文件系统或控制它的人会因其权限而丢失。在重新启动Windows会话之前,尝试杀死僵尸msbuild32.exe进程,重新启动Visual Studio,甚至不显示问题文件也不进行任何检查。没有构建配置问题。它不时发生。Windows中的某些内部问题无法修复,需要重新启动。


我在VS2019上遇到了这个问题...此问题已得到解决...错误仍然存​​在。thx
JHBonarius

2

我遇到了同样的错误,只是安装了一个Nuget软件包(一个不是仅标头),然后尝试卸载。
对我而言,出问题的是,我仍然在一个.cpp文件中包含刚卸载的程序包的头文件(很傻,是的)。
我什至删除了其中的其他库目录链接Project -> Properties -> Linker -> General,但是由于我仍在尝试引用不存在的标头,因此毫无用处。

在这种情况下,绝对是一个令人困惑的错误消息,因为标题名称是,<boost/filesystem.hpp>但是错误给了我"cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"并且没有行号或其他任何内容。


2

我遇到了同样的问题,但是答案中未列出针对我的案例的解决方案。我的防病毒程序(AVG)将文件确定MyProg.exe为病毒,并将其放入“病毒库”。您需要检查此仓库以及文件是否存在-然后将其还原。它帮助了我。


1

对于一个装配项目(ProjectName-> Build Dependencies-> Build Customizations-> masm(已选择)),将Generate Preprocessed Source Listing设置为True也会引起我的问​​题,请清除固定的设置。VS2013在这里。


1

我遇到了链接器抱怨主要可执行文件丢失的相同问题。这发生在我们将解决方案移植到新的Visual Studio 2013的过程中。解决方案是托管和非托管项目/代码的多种组合。问题(和修复)最终成为解决方案文件夹中缺少的app.config文件。花了一天时间解决这个问题:(,因为输出日志不是很有帮助。



0

我之所以要回答,是因为我没有看到其他人列出的特定解决方案。

显然我的防病毒软件(Ad-Aware)标记了我的一个项目所依赖的DLL,并将其删除。即使在排除了DLL所在的目录之后,相同的行为仍然继续,直到我重新启动计算机。


0

就我而言,我已经用GLM替换了先前Game Engine Graphics课程中的数学库文件。问题是我没有将它们添加到Visual Studio的解决方案资源管理器中的项目中(即使它们位于项目存储库中)。


0

结合LNK2038错误,我遇到了这个问题,并关注了这篇文章,我对RELEASE和DEBUG DLL进行了隔离。在此过程中,我清理了这些依赖项所在的整个文件夹。

幸运的是,我已经备份了所有这些文件,并将该错误被抛回该文件的文件放回到DEBUG文件夹中以解决问题。错误代码在某种程度上具有误导性,因为我不得不花费大量时间再次从本文中的一个答案中获得提示。

希望这个答案,对有需要的人有所帮助。


0

我要解决它加入一个现有的项目 ,以我的解决方案,我忘了添加在第一时间。


0

我有同样的错误:

fatal error LNK1104: cannot open file 'GTest.lib;'

这是由于;最终造成的。如果您有多个库,则应使用空格(空格键),逗号或分号隔开!

所以;在列出库时不要使用或其他任何东西Project properties >> Configuration Properties >> Linker >> Input


0

我尝试了上述解决方案,但没有为我工作。因此,我将exe重命名并重建解决方案。这个对我有用。


0

在Visual Studio 2019中构建VC ++ DLL时出现此确切错误:

LNK1104:无法打开文件“ C:\ Program.obj”

在项目“属性”>“链接器”>“输入”>“模块定义文件”下,我指定了一个def文件,该文件名末尾有不匹配的双引号。删除不匹配的双引号可以解决此问题。



-1

我遇到了与“ Visual Studio 2013”​​相同的问题。

LNK1104: cannot open file 'debug\****.exe

在关闭并重新启动Visual Studio之后,它解决了。


-3

我遇到了同样的问题,我刚刚将代码复制到新项目并开始构建。其他错误开始出现。错误C4996:'fopen':此函数或变量可能不安全。考虑改用fopen_s

为了再次解决该问题,我在Project项目中添加了我的一个属性,如下所示。项目->属性->配置属性-> c / c ++。在此类别中,有一个字段名预处理程序定义我已经添加了_CRT_SECURE_NO_WARNINGS这个名称来解决问题希望对您有所帮助...

谢谢


这个答案与原帖无关。
zar

更不用说禁用安全功能也不是一个好主意
Matti Virkkunen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.