问题描述:
偶尔在调试时,我收到以下错误。我正在使用visual studio 2010:
1>------ Build started: Project: projectName, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1104: cannot open file 'C:\Projects\projectName\Debug\projectName.exe'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
请注意projectName
是我项目的名称。当我调试,进行更改和再次调试时发生错误(完成所有这些后,上面的错误显示而不是第二次运行程序)。
复制步骤:
将以下代码复制到main.cpp:
int main(){
return 0;
}
删除main.cpp的内容并将其替换为此代码(或任何其他可以正确编译的代码,与上面使用的代码不同):
#include<iostream>
int main(){
std::cout<<"hello\n";
return 0;
}
LNK1104
错误,而不是运行程序。你现在已经复制了这个问题。有关如何解决此问题的任何想法?
其他详情:
如果我在发生错误后尝试更改权限或删除projectName.exe,则会显示一个错误弹出窗口,其中显示:
您需要获得执行此操作的权限
您需要计算机管理员的许可才能对此文件进行更改
我使用的是Windows 7。
我使用的帐户是管理员帐户,但是当我使用非管理员帐户时,此问题也会完全相同。
错误发生后2-3分钟,我无法重建或调试项目,但在大约那段时间后,我可以再次开始重新启动步骤。
更新:BOUNTY
任何能够提供解决问题的解决方案的人都会获得100次代表:)
我已经尝试停止可能干扰VC ++访问文件的所有服务,进程和应用程序,但问题仍然存在。此外,以管理员身份运行vc ++也无济于事。
答案 0 :(得分:7)
这很可能是Windows资源管理器的 bug 功能。
确保未在Windows资源管理器中选择/关注.exe
文件。在Vista上,当链接期间在Windows资源管理器中选择可执行文件时,我经常会遇到LNK1104
- 错误。
如果这没有帮助,请检查没有其他程序“选择”该文件。
修改强> This program可以显示哪个进程锁定了您的文件(这些页面包含指向其他“解锁”工具的链接)
答案 1 :(得分:4)
我遇到了一个我正在编写的新程序的问题,似乎只编译了一次,但在编译结束时和后续版本中都给出了错误。我的抗病毒程序BitDefender锁定了exe文件。我的exe是在发现的病毒列表中。我关闭Bitdefender 5分钟,重新编译,当Bitdefender重新启动或之后程序没有被锁定。
答案 2 :(得分:1)
您可以使用Process Explorer查看是否有任何进程对该文件打开句柄,即使可执行文件本身未运行。转到查找 - &gt;查找句柄或DLL ...并输入projectName.exe,它将为您提供打开它的所有进程的列表。
答案 3 :(得分:0)
当文件没有锁定时,我从未见过这种情况。你有任何可能仍然坚持的分析或测试工具吗?
注意:我无法重现。
编辑&gt;您是否尝试在程序运行时打开进程资源管理器(而不是任务管理器)?它会告诉你你的exe是否在任何其他进程中运行。
你检查过恶意软件吗?我最近有一个案例,其中一些恶意软件会引导在机器上运行的每个进程,并且任务管理器的信息量不大。
答案 4 :(得分:0)
我的猜测是某些东西锁定了文件。无论出于何种原因,VS都无法打开文件来编写编译输出。正如SnOrfus建议的那样,确保某些分析或测试工具不会打开。在尝试重建之前,我还会尝试在完成程序执行(调试或其他)之间等待几秒钟。您可能正在快速构建,以至于当VS尝试访问它时,调试器仍会锁定文件。