VC++致命错误LNK1168:无法打开filename.exe进行写入
VC++ fatal error LNK1168: cannot open filename.exe for writing
突然,我的Visual Studio Express 2010 C++停止了重建我的项目。当我第一次点击F7时,项目构建并运行良好(见鬼,这是一个hello世界的例子)。
然后我做了一些更改,再次点击F7,然后我得到:
1>LINK : fatal error LNK1168: cannot open C:UsersusernameDocumentsVisual Studio 2010ProjectsconsoleDebugconsole.exe for writing**<br><br>
现在有趣的事情来了:
- 该应用程序未运行,也未显示在任务管理器中
- 进入项目目录并尝试手动删除它是成功的,但文件再次出现在NOWHERE
- 系统还原已禁用
- 我还试图获得整个该死的驱动器的所有权
- 每次我删除文件时,它都会重新创建自己,但有时它会停止这样做
- 如果我删除了该文件(之后它会重新创建),然后启动sysinternals procmon,那么该文件就会消失
- 如果我之前启动procmon,那么文件在删除后会像往常一样不断出现
操作系统:W7 SP1 64位,具有最新更新
有什么想法吗?
问题可能是您忘记关闭程序,而是让程序在后台运行。
找到运行exe文件程序的控制台窗口,然后单击右上角的X关闭它。然后尝试重新编译程序。就我而言,这解决了问题。
我知道这个帖子很旧,但我是在为其他像我一样通过搜索引擎找到这个帖子的人回复。
启用"应用程序体验"服务。启动控制台窗口并键入net start AeLookupSvc
- http://support.microsoft.com/kb/902196
当构建在加载之前突然关闭时,我遇到了这个问题。任务管理器中不会显示任何进程,但如果您导航到项目文件夹中生成的可执行文件并尝试删除它,Windows会声明该应用程序正在使用中。(如果没有,只需删除文件并重新生成,即可生成新的可执行文件)在Windows(Visual Studio 2019)中,文件默认位于以下目录中:
%USERPROFILE%sourcereposProjectFolderNameDebug
要结束据称正在运行的进程,请打开命令提示符并键入以下命令:
taskkill /F /IM ApplicationName.exe
这将强制终止任何正在运行的实例。重建并执行!
重新启动Visual Studio为我解决了这个问题。
在我的情况下,清理和重新构建项目解决了问题。
如果以上解决方案不起作用,你可以尝试一下对我有效的方法。
打开提升的命令提示符(cmd -> Run as administrator
),然后写入以下命令并点击回车键:
wmic process where name='YOUR_PROCESS_NAME.exe' delete
若您看到一条消息:Instance deletion successful.
,那个么您将能够再次从VS构建和运行项目。
例如,在OP的情况下,命令将是:
wmic process where name='console.exe' delete
这解决了同样的问题,我也遇到了很好的
- 如果应用程序仍在任务栏上运行,请关闭该应用程序
- 打开cmd(命令提示符)并运行以下命令
taskkill /F /IM ApplicationName.exe
- 重建您的项目!!错误已解决
实际上,我只是保存并关闭了项目,并在windows 8中重新启动了VS Express 2013,这解决了我的问题。
原因是您以前的构建仍在后台运行。我通过以下步骤来解决这个问题:
- 打开任务管理器
- 转到详细信息选项卡
- 查找您的应用程序
- 右键单击结束任务
- 完成
我也遇到了同样的问题。我的控制台窗口不再打开,但我可以通过进入任务管理器中的进程来查看我的应用程序正在运行。进程名称是我的应用程序的名称。一旦我结束了这个过程,我就可以毫无问题地构建和编译我的代码了。
当FindClose从未执行时,这也可能是由于FindNextFile等函数的不当使用造成的问题。生成文件的过程终止,并且可以删除生成本身,但是LNK1168将由于打开句柄而阻止重新生成。这可能会在资源管理器中造成句柄泄漏,可以通过终止和重新启动资源管理器来解决,但在许多情况下,需要立即重新启动。
我知道这是一个老问题,但我想分享一下我是如何解决这个问题的。
如果您正在使用Visual Studio,并且出现此错误,则可以尝试附加到进程(CTRL+ALT+p)并找到"(program).exe"进程。当您尝试连接到它时,将显示一个错误,说明它未能连接,这将使进程无法"运行"(即使它不是…)。您还可以从Debug文件夹中删除(程序).exe。
希望这能帮助到别人!:)
最终是对我来说完美的最佳方式
除了以下之外,本页中的任何解决方案都不适用于我
在第二个答案的评论部分下面,尝试以下操作:
添加到我的上述评论中,任务管理器不显示filename.exe进程,但资源监视器执行,因此我能够从那里杀死它,这就解决了的问题,而无需重新启动–A_ 19年6月19日21:23
如果以上建议都不适用,我就是这样,只需更改项目名称即可。它在新的项目名称中创建一个新的exe。稍后重新启动时,可以将其更改回原来的项目名称。
我知道这是一个旧线程,但我也遇到了同样的问题。在任务管理器中找到它很难,每次发生这种情况时,我都开始厌倦重新启动电脑。
一个解决方案是下载Process Explorer,在那里您可以搜索正在运行的任务。在我的情况下,我有以下错误:
1>链接:致命错误LNK1168:无法打开C:\Out\Build\VS12_app\Debug\platform_test.exe写入[C:Build\VS12_app\platform_test.vcxproj]
我在Process Explorer中搜索了C:OutBuildVS12_appDebugplatform_test.exe
,杀死了它,我就可以编译了。
此问题的其他答案提供了该问题的一次性手动解决方案。但是,在许多情况下,问题的根本原因是Visual Studio使上一个调试会话的进程处于运行状态,或者至少以对可执行文件保持锁定的方式存在。您可以将Visual Studio设置为在停止调试时自动终止此类进程。这通常会阻止你得到这个错误,以及需要采取手动步骤来纠正它
要指示Visual Studio在调试停止时自动终止进程,请设置以下选项:
工具-->选项-->调试-->概述-->调试停止时自动关闭控制台
在Visual Studio 2022上,这非常接近列表的底部。
就我个人而言,我将在Visual Studio下使用F5(调试)运行一个进程,如果需要,它将首先编译和链接二进制文件。
然后二进制文件崩溃,或者遇到断点,或者我厌倦了等待,所以我会更改源代码,然后点击SHIFT-F5 F5 F5。这是";调试停止"然后是";调试"再一次我只是凭反射来做。
我不确定这个标志的默认值是否在VisualStudio的不同版本之间定期更改,但我不记得以前曾设置过这个选项。我通常创建的项目很少,但工作了很多年,所以也许我每次都手动设置这个选项,然后忘记它。但在2022年,它确实需要设置。我已经设置好了,现在可以像以前一样工作了。
以管理员身份启动程序。程序无法重写您的文件,因为您的文件位于硬盘驱动器上受保护的位置。
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 终端不会为C++文件创建.exe文件吗
- 在Windows中以.exe的形式运行c++
- Visual Studio mkl_link_tool.exe链接错误
- PrintWindow函数在notepad.exe中出错
- VSCode C++ 编译的exe感染了Win32:TrojanX-gen[Trj]
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 获取当前正在运行的 exe 名称(不是路径)
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 1d.exe找不到SFML文件?
- VI工作室代码错误无法打开输出文件主.exe
- 如何为每个客户生成自定义 exe
- 使用参数在 C# 的C++上运行.exe
- 在 ******.exe 中0x00000000772CA267 (ntdll.dll) 处未处理的异常:0xC0000
- 如何在Visual Studio Code中重命名我的a.exe文件?
- 解析引用 |exe/dll vs lib
- 'Cannot output file filename.exe Permission denied' C++ 代码::块中的错误
- VC++致命错误LNK1168:无法打开filename.exe进行写入
- filename.exe已停止在CodeBlocks中工作
- "cannot open output file filename.exe: Permission denied"