Visual studio 链接:致命错误LNK1104:无法打开文件';D:\…\MyProj.exe';

Visual studio 链接:致命错误LNK1104:无法打开文件';D:\…\MyProj.exe';,visual-studio,visual-studio-2010,locking,executable,Visual Studio,Visual Studio 2010,Locking,Executable,使用VisualStudio2010,在短时间内构建并运行应用程序时,经常会出现以下错误。如果我只等一两分钟,然后再试一次,效果很好。声明没有句柄正在锁定可执行文件。如何发现锁定它的内容?如果是Visual Studio本身,我应该如何使其停止?或者发布该文件 1>------ Build started: Project: MyProj, Configuration: Release Win32 ------ ... 1>InitializeBuildStatus: 1>

使用VisualStudio2010,在短时间内构建并运行应用程序时,经常会出现以下错误。如果我只等一两分钟,然后再试一次,效果很好。声明没有句柄正在锁定可执行文件。
如何发现锁定它的内容?
如果是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 ==========

文件现在正在运行,因此无法锁定。尝试使用任务管理器终止进程。

您可能有一个错误的生成进程正在锁定可执行文件,而它(错误的进程)没有得到清理。在这种情况下,关闭VisualStudio,打开process explorer,然后对所有与VisualStudio相关的进程进行核爆。
然后再次打开visual studio并尝试重建您的项目。

我认为这是visual studio的某种缺陷。也许C Johnson是对的——也许构建过程会保持文件锁定

我确实有一个解决方法,每次发生这种情况时,我都会更改项目属性下可执行文件的目标名称(右键单击项目,然后单击属性\配置属性\常规\目标名称)

以这种方式,VS创建了一个新的可执行文件,解决了这个问题。每隔几次,我都会返回到原始名称,从而循环使用~3个名称


如果有人会找到原因和解决方案,请回答,我可能会将答案移到您的答案上,因为我的答案是一个解决方法。

我知道这是一个很老的问题,但我只是在Visual Studio 2010中遇到了相同的问题,所有问题都已修复,因此其他人可能仍会遇到此问题

将我的项目路径添加到我的AVG防病毒设置中的“排除项”似乎已经解决了这个问题


尝试禁用任何防病毒/常驻屏蔽,看看它是否解决了问题。如果是这样,请将项目路径添加到AV配置中的排除目录。

在今天重新安装后出现此问题。确保应用程序体验服务已启动且未设置为禁用。如果设置为手动,我相信VS会启动它。

我也有同样的问题,但是使用代码块。因为这个问题,我退出了编程,因为每次我都想把电脑扔出窗外

我想感谢用户963228,他的回答真的是一个解决方案。您必须手动启动应用程序体验(您可以通过在windows 7“开始”菜单中搜索服务,然后查找应用程序体验并单击“属性”来实现)

当人们想要调整他们的Windows7机器,并且他们决定禁用一些毫无意义的服务时,就会出现这个问题,所以他们在谷歌上搜索一些调整指南,大多数指南都说禁用应用程序体验是安全的

我认为这个问题应该与windows 7问题而不是VS问题联系起来,而且应该更加明显——我花了很长时间才找到这个解决方案


再次感谢

您可能没有关闭输出。关闭输出,清理并重建文件。您现在可能可以运行该文件。

正如Jonathan所说,是的,重命名有助于解决此问题。但是,例如,我被迫多次重命名目标可执行文件,这有些乏味,也不好

问题在于,当你运行你的项目,然后出现一个错误,你不能构建你的项目-这是因为这个可执行文件(你的项目)仍然在运行(你可以通过任务管理器检查) 如果您只是重命名目标构建,一段时间后,您也会在使用新名称时收到相同的错误,并且如果您打开任务管理器,您将看到您的未完成项目将垃圾处理系统

VisualStudio需要删除以前的可执行文件并创建新的而不是旧的,当可执行文件仍在运行时,它不能这样做。所以,若你们想做一个新的构建,那个么旧的可执行文件的进程必须关闭!(奇怪的是,VisualStudio并没有自己关闭它,是的,它看起来像是有问题的行为)

手动执行此操作有些繁琐,因此您可能只需要一个bat文件,在遇到此类问题时单击它即可:

taskkill /f /im name_of_target_executable.exe
至少对我来说是这样。 就像一个猜测——我不关闭我的程序在C++中,所以它可能是正常的VisualStudio保持它运行。 添加: 这是一个很大的机会,因为还没有完成申请。检查最后是否调用了PostQuitMessage,以便让“知道”窗口知道您已经完成了操作。

错误(至少有时)来自太长的路径。在我的项目中,只需减少输出文件路径即可: “属性/配置属性/常规/中间目录”


本贾尼·斯特劳斯特卢普(S.U.P.>)似乎已经触及了250个字符的路径限制。

< P>使用BjARNE StruouStrup编程原理和实践,用C++“FLTK”示例,我得到了同样的错误,但是在1小时后,我得到了一个想法,我跟踪了在项目属性中已经看到的一个LIBS——>链接器>输入->附加依赖项,在我的例子中,我跟踪了kernel32.lib以查看它的位置,并看到在不同的文件夹中有许多kernel32.lib。所以我开始在这些文件夹中复制FLTK库,最后一个我尝试的文件夹成功了。Visual Studio 2013 Express找到了fltkd.lib,代码正常工作

在我的例子中,正确的路由是C:\ProgramFiles(x86)\Windows Kits\8.1\Lib\winv6.3\um\x86

我不知道如何在VisualStudio中设置该路径

不确定该Windows工具包文件夹是否是在安装Microsoft Windows SDK for Windows 7和.NET Framework 4(ISO)时创建的


希望这能对大家有所帮助。

为了给列表添加另一个解决方案,我发现Visual Studio(在我的例子中是2012)偶尔会在不同的进程下锁定文件

因此,在崩溃时,devenv.exe可能仍在运行并保留文件。或者(正如我刚刚发现的那样),
 Enable Assembler Generated Code Listing   Yes/Sg
 Assembled Code Listing $(ProjectName).lst