代码之家  ›  专栏  ›  技术社区  ›  Cam

“无法打开文件”compiletime错误

  •  2
  • Cam  · 技术社区  · 14 年前

    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”的文件添加到sources文件夹中
    2. 将以下代码复制到main.cpp中:

      int main(){
          return 0;
      }
      
    3. 单击绿色的调试箭头按钮,并注意程序的成功运行。确保它已关闭并且调试会话已结束。打开process explorer并确保项目的exe不再运行(如果已运行,请等待它关闭)。
    4. #include<iostream>
      int main(){
          std::cout<<"hello\n";
          return 0;
      }
      
    5. 单击绿色的调试箭头按钮。IDE将显示致命错误,而不是运行程序 LNK1104 错误。你现在已经复制了这个问题。


    其他详细信息:

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

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

    • 我用的是Windows7。

    • 我使用的帐户是一个管理员帐户,但是当我使用一个非管理员帐户时也会发生同样的问题。

    • 在错误发生后的2-3分钟内,我无法重建或调试项目,但在大约相当长的时间后,我可以重新开始重新编程步骤。


    更新:赏金

    任何能提供解决方案来解决问题的人都会得到100次重复:)

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

    5 回复  |  直到 14 年前
        1
  •  7
  •   smerlin    14 年前

    缺陷 Windows资源管理器的功能。

    确保 .exe 在Windows资源管理器中未选择/聚焦文件。在维斯塔我经常 LNK1104

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

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

        2
  •  4
  •   Steve    12 年前

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

        3
  •  1
  •   mkarasek    14 年前

    您可以使用processexplorer查看是否有任何进程打开了该文件的句柄,即使可执行文件本身没有运行。转到查找->查找句柄或DLL。。。并键入projectName.exe,它将为您提供一个打开它的所有进程的列表。

        4
  •  0
  •   Chris Thompson    14 年前

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

        5
  •  0
  •   Steven Evers    14 年前

    我从没见过档案上没有锁的时候会发生这种事。您是否有任何分析或测试工具,可能仍然持有它?

    注意:我没法再重复一遍。

    编辑>您是否尝试过在程序运行时打开process explorer(与任务管理器相反)?它将显示您的exe是否在任何其他进程中运行。