【问题标题】:VIsual Studio Code error cannot open output file main.exeVIsual Studio Code 错误无法打开输出文件 main.exe
【发布时间】:2020-06-24 16:35:14
【问题描述】:

这是我第一个使用 Visual Studio Code 的项目。当我去运行我的“Hello World”项目时,我得到了这个

cd "c:\Users\imaco\Desktop\Cpppractice" && g++ main.cpp -o main && "c:\Users\imaco\Desktop\Cpppractice"main c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: 无法打开输出文件 main.exe: 权限被拒绝 collect2.exe:错误:ld 返回 1 个退出状态

我的代码读取

1    #include <iostream>
2
3
4
5     int main()
6  {
7   std:: cout << "Hello World!";
8   }

-我已经确定它没有在后台运行。 - 我已经关闭并重新打开程序并再次运行代码,结果相同。 - 我在 Bit Defender 中允许它作为一个例外。

任何帮助将不胜感激!

【问题讨论】:

  • 尝试使用cmd命令tasklist找到它,并使用taskkill杀死它
  • 看起来collect2.exe 已被操作系统锁定。谷歌“Windows 查找锁定文件”之类的。您可以使用一些程序来告诉您哪些文件正在使用哪些文件,以便您结束正确的任务。
  • @Andy 当我在 Process Explorer 中搜索 collect2.exe 时,我得到 0 个匹配结果。
  • 不要使用进程资源管理器,使用LockHunter -- 它集成到 Windows 资源管理器中。您只需右键单击它,它就会告诉您是什么锁定了它。如果什么都没有,请手动删除文件并重试。
  • 这部分命令看起来不正确"c:\Users\imaco\Desktop\Cpppractice"main Cpppractice 和 main 之间缺少反斜杠。

标签: c++ visual-studio-code mingw


【解决方案1】:

我需要 50 声望才能发表评论,否则我会添加评论。我自己遇到了这个问题,我用这个解决了它。但是,它对我有用:

“无法打开输出文件 main.exe: Permission denied collect2.exe: error: ld returned 1 exit status”

它说权限已被拒绝。这可能意味着您没有在某个文件夹中授予对 Visual Studio 的执行权限,或者该文件具有执行限制。您可能将此文件存储在访问受限的文件夹中。有两种选择:

  • 您可以将其移至没有任何执行访问限制的新文件夹。
  • 您可能必须更改该文件夹/文件的权限才能使用管理员权限读取、写入和执行。

如果这不起作用,请在 cmets 部分告诉我,因为我遇到了同样的权限被拒绝问题。

【讨论】:

    【解决方案2】:

    尝试打开终端(Ctrl + `)并输入: g++ main.cpp 然后 .\a.exe

    (假设终端在您的工作目录中打开)

    【讨论】:

    • 他现有的命令是正确调用g++ 并正确使用-o 选项。
    • 我得到的是 PS C:\Users\imaco\Desktop\Cpppractice> g++ main.cpp PS C:\Users\imaco\Desktop\Cpppractice> .\a.exe Hello World! PS C:\Users\imaco\Desktop\Cpppractice>
    • 我认为您的程序运行正确,因为它显示“Hello World!”并且 PS C:\Users\imaco\Desktop\Cpppractice> 在 hello world 之后添加,因为您没有指定新行。获得“Hello World!”没有 PS C:\Users\imaco\Desktop\Cpppractice> 添加 std::cout
    • cd "c:\Users\imaco\Desktop\Cpppractice\" && g++ main.cpp -o main && "c:\Users\imaco\Desktop\Cpppractice\"main c:/mingw/ bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:无法打开输出文件 main.exe:权限被拒绝 collect2.exe:错误: ld 返回 1 个退出状态
    【解决方案3】:

    这通常发生在 VS 决定让一段代码作为单独的实体在后台运行时。解决此问题的一种方法是,由于您使用的是 Windows,因此我将右键单击任务栏并单击任务管理器。这将打开当前在计算机上运行的所有任务。然后,搜索“Windows 控制台主机”。您可以更改列表的排序。找到它后,您可以单击它,然后在右下角它将有一个“结束任务”可供您单击。单击它,然后重试。

    在那之后你应该会很好,但是如果你仍然有问题,请告诉我。

    【讨论】:

    • 当我打开任务管理器时没有名为Windows Console Host的进程
    • Windows 控制台主机或您制作的程序的名称。这在我身上发生过几次,所以我会尝试在任务管理器中查看可能正在运行的程序的任何重复实例。该程序可能由于某种原因被挂起,我不明白为什么会挂起,但我会尝试在任务管理器中检查可能链接到该程序的任何类型的实例。
    • VSC 有 5 个进程正在运行,但结束一个进程会完全关闭程序。
    猜你喜欢
    • 1970-01-01
    • 2020-03-15
    • 2018-10-24
    • 2011-11-19
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多