124

我在 Visual Studio 2008 中创建了一个新的 C++ 项目。尚未编写任何代码;只有项目设置已更改。

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

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

4

27 回答 27

162

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

在项目属性的Configuration Properties -> Linker -> Input选项卡上,有一个Additional Dependencies属性。此问题已通过添加引号得到解决。例如,将此属性更改为:

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

到:

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

我在哪里添加了引号。

于 2008-09-25T14:33:01.647 回答
71

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

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

于 2014-08-13T16:10:44.853 回答
17

关闭并重新打开 Visual Studio 后,我的问题就消失了。不知道为什么会出现问题,但这可能值得一试。

这是在 VS 2013 Ultimate,Windows 8.1 上。

于 2015-02-04T17:07:12.467 回答
10

还要检查您是否没有打开它:Configuration Properties -> C/C++ -> Preprocessor -> Preprocess to a File

于 2015-12-26T19:11:31.633 回答
5

我的问题是缺少.lib扩展名,我只是链接mylib,VS 决定寻找mylib.obj.

于 2015-12-22T09:51:46.410 回答
4

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

于 2013-09-26T05:20:37.513 回答
3

在我的情况下,这是一个错误的参考问题。项目引用了另一个项目的输出,但后者没有输出前者正在寻找的文件。

于 2014-08-13T19:54:57.807 回答
3

解决方案 1(就我而言):重新启动 windows Explorer 进程(是的,windows 文件管理器)。

解决方案2:

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

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

于 2016-12-30T09:27:52.347 回答
2

我遇到了同样的错误,只是我安装了一个 Nuget 包(一个不仅是头文件),然后尝试卸载。
对我来说错的是我仍然在我的一个 .cpp 文件中包含我刚刚卸载的包的标题(非常愚蠢,是的)。
我什至在 中删除了指向它的附加库目录链接Project -> Properties -> Linker -> General,但当然无济于事,因为我仍在尝试引用不存在的标头。

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

于 2016-01-19T11:22:31.187 回答
2

我遇到了同样的问题,但我的案例的解决方案未在答案中列出。我的防病毒程序 (AVG) 将文件确定MyProg.exe为病毒并将其放入“病毒库”。你需要检查这个仓库,如果文件在那里 - 然后恢复它。它帮助了我。

于 2016-06-07T06:16:11.330 回答
1

对于装配项目(ProjectName -> Build Dependencies -> Build Customizations -> masm(已选择)),将Generate Preprocessed Source Listing设置为True也对我造成了问题,清除设置修复了它。VS2013 在这里。

于 2014-11-16T00:26:17.397 回答
1

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

于 2014-12-04T21:58:31.483 回答
1

我根据此列表检查了所有设置:http: //msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback。这对我有帮助,对于我的情况,我发现项目属性的链接依赖项有双引号,不应该存在。

于 2014-12-19T16:07:09.573 回答
1

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

..\..\..\..\..\..\..\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. 我还通过添加绝对路径而不是相对路径来验证这一点,因为所有那些“..”也扩展了路径字符串。这也奏效了。

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

于 2020-12-08T09:09:29.507 回答
0

我正在回答,因为我没有看到其他人列出这个特定的解决方案。

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

于 2015-11-23T01:13:22.387 回答
0

就我而言,我已经用 GLM 替换了之前游戏引擎图形课程中的数学库文件。问题是我没有将它们添加到 Visual Studio 的解决方案资源管理器中的项目中(即使它们在项目存储库中)。

于 2017-02-04T23:51:28.840 回答
0

我遇到了与 LNK2038 错误相关的问题,按照这篇文章隔离了 RELEASE 和 DEBUG DLL。在这个过程中,我清理了这些依赖项所在的整个文件夹。

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

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

于 2017-02-07T04:56:58.410 回答
0

我通过在我的解决方案中添加一个现有项目来解决它, 一次忘记添加它

于 2017-05-31T18:20:17.567 回答
0

我有同样的错误:

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

这是最后造成的;。如果你有多个库,它们应该用空格(空格键)分隔,没有逗号或分号!

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

于 2017-10-25T18:31:45.647 回答
0

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

于 2019-11-20T06:20:08.730 回答
0

在 Visual Studio 2019 中构建 VC++ DLL 时,我遇到了这个确切的错误:

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

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

于 2019-12-12T22:14:46.253 回答
0

杀死msbuild32.exe并重新建造。它对我有用。

于 2020-07-16T11:09:49.433 回答
0

我的问题是由其他应用程序使用我尝试调试的 .dll文件引起的。

关闭使用 .dll的应用程序为我解决了这个问题。

于 2020-09-13T01:32:38.123 回答
0

可能的解决方案:

  1. 检查路径是否包含任何空格,转到“属性”>“链接器”>“输入”>“附加路径”并包括“带空格的路径”

  2. 如果程序仍在运行,请关闭所有内容并重新启动。

  3. 检查是否未创建 .obj 文件。当您在“属性”>“C++”>“预处理器”>“生成预处理器文件”打开时直接构建项目时,会发生这种情况。将其关闭并构建项目,然后您可以打开 Properties > C++ > Preprocessor > Generate preprocessor file。

于 2021-05-30T19:09:18.877 回答
0

我有一个类似的问题。我使用以下命令解决了它以终止正在运行的任务:

taskkill /f /im [nameOfExe]

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

于 2021-09-13T11:44:09.423 回答
-1

我在“Visual Studio 2013”​​中遇到了同样的问题。

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

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

于 2018-11-14T05:25:58.877 回答
-4

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

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

谢谢你

于 2017-09-14T10:19:16.890 回答