LINK: 致命错误 LNK1104:无法打开文件 'D:\...\MyProj.exe'

54

使用Visual Studio 2010,当我短时间内构建+运行我的应用程序时,经常会出现以下错误。如果我等一两分钟再尝试,它就可以正常工作。Unlocker 声明没有句柄锁定可执行文件。
我该如何发现是什么在锁定它?
如果是 Visual Studio 自身锁定了文件,我该怎么做才能让它停止?或者释放这个文件?

1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1>  Creating "Release\MyProj.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  All outputs are up-to-date.
1>  SomeFile1.cpp
1>ResourceCompile:
1>  All outputs are up-to-date.
1>LINK : fatal error LNK1104: cannot open file 'D:\...\MyProj.exe'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.94
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

这可能是与静态库(.lib)文件相关的此处报告的问题相同的问题。 - Cody Gray
2
特别是,请检查“调试->常规”中是否禁用了“启用.NET Framework源代码步进”。这对我有用,尽管我看到的是静态库而不是可执行文件。 - Skrymsli
谢谢,@Skrymsli,禁用 "启用.NET Framework源代码步骤" 对我有用。我使用此解决方法更新了 Cody Gray 链接的 connect 页面。 - Helge Klein
17个回答

1
通常情况下,这意味着您的程序被锁定,可能无法通过任务管理器或进程资源管理器终止。我遇到过一个类似的情况,我的程序在运行过程中出现异常,触发了Windows错误报告,从而锁定了该程序。对于Windows错误报告锁定程序的情况,您可以进入控制面板->系统和安全->操作中心->问题报告设置,将其设置为“从不检查解决方案”。希望对您有所帮助。

这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言 - 您始终可以在自己的帖子上发表评论,并且一旦您拥有足够的声望,您将能够评论任何帖子 - LeftyX
@LeftyX 感谢您的建议,我添加了一个详细的解决方案,帮助我摆脱了这样的问题。 - tkingcer

1

当我尝试使用调试模式构建时,出现了问题,但在发布模式下运行良好。我将Visual Studio的构建配置从x86更改为x64,因为我正在64位系统上运行,这样就可以正常工作。


1

我在VS22中遇到了这个问题 - 我想是当它正在编译时我关闭了调试器。我所需要做的就是重新启动我的电脑。


0
使用Bjarne Stroustrup的《Programming Principles and Practice Using C++》中的“FLTK”示例时,我遇到了相同的错误,但大约1小时后我想到了一个主意,我跟踪了一个已经在项目属性->链接器->输入->附加依赖项中看到的库,就是kernel32.lib,在我的情况下,我跟踪了kernel32.lib以查看其位置,并发现有许多不同文件夹中的kernel32.lib。因此,我开始将FLTK库复制到这些文件夹中,最后一个我尝试的工作了。Visual Studio 2013 Express找到了fltkd.lib,代码也可以正常工作。
在我的情况下,正确的路径是C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86
我不知道如何在Visual Studio中设置该路径。
不确定是否在安装Microsoft Windows SDK for Windows 7和.NET Framework 4(ISO)http://www.microsoft.com/en-us/download/details.aspx?id=8442时创建了该Windows kits文件夹。
希望这能帮助你们。

0

我刚遇到了同样的问题。对我来说,exe仍在运行,但我无法使用任务管理器结束它。只有通过重新启动VS,才能解决我的问题。


0
错误通常是由于路径过长引起的。在我的项目中,简单地缩短输出文件路径就可以解决问题: “属性/配置属性/常规/中间目录”
看来我已经达到了250个字符的路径限制。

0

我的意思是,如果您在设置MASM列表文件选项时进行了一些额外的选择,它会给您带来这个错误。

只需使用

 Enable Assembler Generated Code Listing   Yes/Sg
 Assembled Code Listing $(ProjectName).lst

没问题。

但如果有任何额外的问题,请告诉我。


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