LINK:致命错误LNK1104:无法打开文件'D:\ … \ MyProj.exe'
使用Visual Studio 2010,当我build立+在很短的时间间隔运行我的应用程序时,我经常会得到以下错误。 如果我只等一两分钟,再试一次就可以。 解锁器声称没有句柄locking可执行文件。
我怎样才能发现locking它?
如果是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 ==========
今天重新安装后有这个问题。 确保“应用程序体验”服务已启动,但未设置为禁用。 如果将其设置为手动,我相信VS会启动它。
你可能有一个零散的构build过程,locking了可执行文件,而它(stream浪过程)没有得到清理。 在这种情况下,closures视觉工作室,打开过程浏览器,并核实您可以find的与视觉工作室相关的每个过程。 然后再次打开visual studio并尝试重build您的项目。
我知道这是相当古老的,但我只是有与Visual Studio 2010相同的问题,所有补丁,所以其他人可能仍然遇到这一点。
将我的项目path添加到我的AVG防病毒设置中的“Exluded Items”似乎已经解决了我的问题。
尝试禁用任何防病毒/常驻护盾,看看它是否解决了这个问题。 如果是这样,请将您的项目path添加到AVconfiguration中排除的目录。
该文件可以被locking,因为它正在运行。 尝试使用任务pipe理器来终止进程。
您可能没有closures输出。 closures输出,清理并重build文件。 您现在可能可以运行该文件。
像乔纳森说的,是的,重命名可以帮助解决这个问题。 但是,例如,我被迫多次重命名目标可执行文件,这是一些乏味和不好的事情。
问题在于,当你运行你的项目,然后得到一个错误,你不能build立你的项目 – 这是因为这个可执行文件(你的项目)仍然运行(你可以通过任务pipe理器来检查它)。如果你只是重命名目标构build,一段时间后,你也会得到与新名称相同的错误,如果你打开一个任务pipe理器,你会看到你的垃圾系统与你未完成的项目。
用于制作新版本的Visual Studio需要删除以前的可执行文件,并创build新的而不是旧的,但在可执行文件仍在运行时无法执行。 所以,如果你想做一个新的构build,旧的可执行文件的进程必须closures! (很奇怪,visual studio本身并没有closures它,是的,它看起来像一些错误的行为)。
手动操作有点麻烦,所以你可能只是一个bat文件,当你遇到这样的问题时只需点击它即可:
taskkill /f /im name_of_target_executable.exe
它至less适用于我。 就像猜测一样 – 我不会在C ++中正确地closures我的程序,所以对于Visual Studio来说可能是正常的。
附加:因为没有完成申请,所以很有可能是这样。 检查是否在最后调用PostQuitMessage,以便知道Windows已经完成。
我已经得出这是一些Visual Studio的错误。 也许约翰逊是对的 – 也许构build过程保持文件locking。
我有一个解决方法 – 每次发生这种情况 – 我更改项目的属性下的可执行文件的目标名称(右键单击项目,然后属性\configuration属性\常规\目标名称)。
以这种方式VS创build一个新的可执行文件,并解决问题。 每隔几次,我都会回到原来的名字,从而循环使用3个名字。
如果有人会find这个原因和解决scheme,请做答案,我可以将答案移到你的,因为我是一个解决方法。
我有同样的问题,但使用Codeblocks。 由于这个问题,我退出编程,因为每次我只是想把我的电脑扔出窗外。
我想感谢user963228谁的答案真的是一个解决scheme。 您必须将应用程序体验手动启动(您可以通过在Windows 7开始菜单中search服务,然后find应用程序体验并单击属性)。
这个问题发生在人们想调整他们的Windows 7机器,他们决定禁用一些毫无意义的服务,所以他们谷歌一些调整指南和大多数指南说,应用程序体验是安全的禁用。
我认为这个问题应该与Windows 7的问题,而不是VS问题,应该更明显 – 我花了很长时间才find这个解决scheme。
再次感谢!
只是为列表添加另一个解决scheme,我发现,Visual Studio(2012在我的情况)有时在不同的进程下locking文件。
所以,在发生崩溃时,devenv.exe可能仍在运行并持有该文件。 另外(正如我刚刚发现的),vstestrunner或vstestdiscovery也可以保留在文件中。
杀死所有这些进程,它可能会解决这个问题。
我刚刚遇到了与VS2013相同的问题,用C ++创build设备驱动程序,上面没有一个似乎解决了这个问题。 但是,我刚刚发现,在我的情况下,这个问题似乎与VMWare相关。
我运行一个VMWare工作站客户端,在整个C:盘上的VM上定义了一个共享文件夹。 当我禁用VM设置上的共享文件夹时,VS2013能够愉快地生成我的.exe文件。
我的新过程是:
1)禁用虚拟机上的共享文件夹(虚拟机设置|选项|共享文件夹 – 并取消选中checkbox)2)在主机上运行构build3)重新启用共享文件夹(并从那里继续)
希望这可能会帮助别人。
(顺便说一句,你收到的错误是.exe(或其他文件)被locking或需要pipe理员权限,但这是一个红鲱鱼 – 在我看来,VMWare共享导致这些文件显示为locking。
错误(至less有时)来自太长的path。 在我的项目中,简单地减less输出文件path的工作:“属性/configuration属性/常规/中级目录”
似乎我已经达到了250个字符的path限制。
使用Bjarne Stroustrup编程原则和实践使用C ++“FLTK”的例子,我得到了同样的错误,但在1小时后,我有一个想法,我跟踪了一个在项目属性 – >连接器 – >input – >其他依赖项,在我的情况下,我跟踪了kernel32.lib来查看位置,看到有很多kernel32.lib在不同的文件夹中。 所以我开始复制这些文件夹中的FLTK库和最后一个我尝试工作。 Visual Studio 2013 Express发现fltkk.lib和代码工作。
在我的情况下,正确的路线是C:\ Program Files文件(x86)\ Windows工具包\ 8.1 \ Lib \ winv6.3 \ um \ x86
我不知道如何在Visual Studio中设置路线。
不知道当我安装Windows 7和.NET Framework 4(ISO)的Microsoft Windows SDK时,是否创buildWindows工具包文件夹http://www.microsoft.com/en-us/download/details.aspx?id=8442
希望能帮助你的人。
我只是有同样的问题。 与我的exe文件仍在运行,但我不能用任务pipe理器结束。 只要重新启动VS,它为我工作。
我的是,如果你设置MASM列表文件选项一些额外的select,它会给你这个错误。
只是使用
Enable Assembler Generated Code Listing Yes/Sg Assembled Code Listing $(ProjectName).lst
没事。
但是,你有任何额外的问题。
通常,这意味着你的程序被locking,可能不会被任务pipe理器或进程pipe理器终止。 我遇到了类似的情况,我的程序在运行时出现exception,并触发了locking程序的Windows错误报告。 对于Windows错误报告locking程序的情况,您可以进入控制面板 – >系统和安全 – >操作中心 – >问题报告设置,设置“从不检查解决scheme”。 希望能帮助到你。