【问题标题】:"cannot open file" compiletime error“无法打开文件”编译时错误
【发布时间】:2012-06-26 23:27:10
【问题描述】:

问题描述:

调试时偶尔会出现以下错误。我正在使用 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 是我的项目的名称。当我调试、更改和再次调试时出现错误(在完成所有这些操作后,出现上述错误,而不是再次运行程序)。

复制步骤:

  1. 创建一个新的空 c++ 项目,并将名为“main.cpp”的文件添加到源文件夹中
  2. 将以下代码复制到main.cpp中:

    int main(){
        return 0;
    }
    
  3. 点击绿色调试箭头按钮,注意程序运行成功。确保它已关闭并且调试会话已结束。打开进程资源管理器并确保项目的 exe 不再运行(如果是,请等待它关闭)。
  4. 删除 main.cpp 的内容并将其替换为此代码(或任何其他可以正确编译的代码,与上面使用的代码不同):

    #include<iostream>
    int main(){
        std::cout<<"hello\n";
        return 0;
    }
    
  5. 单击绿色调试箭头按钮。 IDE 将显示致命的LNK1104 错误,而不是运行程序。您现在已经复制了问题。

关于如何解决这个问题的任何想法?


其他细节:

  • 如果我在错误发生后尝试更改权限或删除 projectName.exe,则会弹出错误消息:

    您需要权限才能执行此操作

    您需要计算机管理员的许可才能更改此文件

  • 我使用的是 Windows 7。

  • 我使用的帐户是管理员帐户,但是当我使用非管理员帐户时也会出现此问题。

  • 在错误发生后的 2-3 分钟内,我无法重建或调试项目,但在大约这段时间之后,我能够再次从重现步骤的开头开始。


更新:赏金

任何能够提供解决问题的解决方案的人都会获得 100 个代表 :)

我已尝试停止所有可能干扰 VC++ 访问文件的服务、进程和应用程序,但问题仍然存在。此外,以管理员身份运行 vc++ 也无济于事。

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

    这很可能是 Windows 资源管理器的 错误功能。

    确保.exe 文件未在 Windows 资源管理器中被选中/聚焦。在 Vista 上,当链接期间在 Windows 资源管理器中选择可执行文件时,我经常收到 LNK1104-errors。

    如果没有帮助,请检查是否没有其他程序“选择”该文件。

    编辑: This program 可以告诉您哪个进程锁定了您的文件(页面还包含一些指向其他“解锁”工具的链接)

    【讨论】:

      【解决方案2】:

      我编写的一个新程序出现了这个问题,该程序似乎编译过一次,但在编译结束和后续构建时出现错误。我的抗病毒程序 BitDefender 锁定了 exe 文件。我的 exe 在发现的病毒列表中。我关闭了Bitdefender 5分钟,重新编译,当Bitdefender重启或之后程序没有被锁定。

      【讨论】:

        【解决方案3】:

        您可以使用 Process Explorer 查看是否有任何进程打开了该文件的句柄,即使可执行文件本身没有运行。转到 Find -> Find Handle or DLL... 并输入 projectName.exe,它会给你一个打开它的所有进程的列表。

        【讨论】:

          【解决方案4】:

          我的猜测是文件上有些东西被锁定了。无论出于何种原因,VS 无法打开文件来写入编译输出。正如 SnOrfus 建议的那样,确保某种分析或测试工具未打开。在尝试重建之前,我还会尝试在完成程序执行(调试或其他方式)之间等待几秒钟。有可能您的构建速度太快,以至于当 VS 尝试访问该文件时,调试器仍会锁定该文件。

          【讨论】:

          • 我一开始也是这么想的。然而奇怪的是,错误发生后,我仍然无法重建或任何东西分钟。如果是几 (1-3) 秒,那就不同了。
          • 这很奇怪,我想知道是否有一些奇怪的情况导致调试器挂起几分钟然后超时......当你打开任务管理器时,你能识别任何可能出现的进程吗?成为调试器?
          【解决方案5】:

          我从未见过文件没有锁定时会发生这种情况。您是否有任何分析或测试工具可能仍在使用它?

          注意:我无法重现。

          edit> 您是否尝试过在程序运行时打开进程资源管理器(而不是任务管理器)?它会显示您的 exe 是否在任何其他进程中运行。

          您是否检查过恶意软件?我最近遇到了一个案例,其中一些恶意软件会引导机器上运行的每个进程,而任务管理器的信息量不是很大。

          【讨论】:

          • 不,我不知道。我已经用一些额外的细节编辑了这个问题。
          • 任务管理器实际上是指进程资源管理器:) 我已经进行了相应的编辑。我很确定我没有恶意软件 - 我会再次进行病毒检查以确保...
          猜你喜欢
          • 1970-01-01
          • 2014-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多