/mingw32/bin/ld.exe:无法打开输出文件HelloWorld.exe:权限被拒绝 collect2.exe:错误:ld返回了1个退出状态

6
#include<iostream>
using namespace std;
int main(){
    cout << "Hello World\n";
    return 0;
} 

这是一个简单的程序,其中我只是打印“Hello World”,但每次都会出现错误。

[Running] cd "e:\C++\Data Types\" && g++ HelloWorld.cpp -o HelloWorld && "e:\C++\Data Types\"HelloWorld
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Permission denied
collect2.exe: error: ld returned 1 exit status

我已经尝试了一切,但无法生成HelloWorld.exe文件并运行此代码。


3
这意味着你的杀毒软件可能正在打开这个文件,或者你仍在运行之前的可执行文件,或者你存在权限问题,即你的用户没有写入文件的权限。如果你使用的是与操作系统自带的不同的杀毒软件,我更倾向于第一种情况。 - drescherjm
浏览到文件夹 e:\C++\Data Types\HelloWorld 并查看文件是否存在。 - drescherjm
1
我的第二个建议是在C++编程中永远不要使用路径中的空格。 - drescherjm
1
有些杀毒软件有沙盒模式,如果激活可能会导致C++软件无法正常工作。我曾经在avast上看到过这种情况。通常我会为我的代码创建一个特殊的根文件夹,例如c:\programming或驱动器x:,并告诉我的杀毒软件忽略整个目录树。 - drescherjm
不包括构建和源文件夹也可以提高所有开发相关任务(搜索、调试、执行等)的性能。当然,排除这些目录使得从源代码编译的病毒代码可以轻松地从该位置执行,因此不要只是编译所有东西而不验证和信任源代码。 - rubenvb
显示剩余5条评论
3个回答

6
如果您正在使用Visual Studio Code,您可以删除显示在filename.cpp下方的filename.exe文件,然后重新构建即可解决问题。
如下图所示: As shown in image

0
那是因为你在终端中打开了这个文件。你必须先关闭终端。

0

这是因为您的防病毒软件已删除该文件或停止其执行。

  1. 复制您的代码并删除该文件,或转到步骤2
  2. 创建一个新文件并将代码粘贴到其中,在运行新代码之前,请确保从防病毒扫描中排除/隔离您的程序文件夹(或关闭防病毒软件或将其置于静默模式),以便它不再删除或移动您的文件。
  3. 现在运行新文件,它应该可以正常运行:))

诺顿文件排除步骤


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接