Gcc编译的可执行文件产生“访问被拒绝”消息?

时间:2013-11-14 15:32:16

标签: c++ c gcc

我已设置gccdev-c的路径。它编译正常并创建可执行文件,但它无法运行程序并首先显示一个消息框(如第一张图片所示),然后在控制台上打印错误消息


注意:

  1. 如果我在系统上使用Dev-Cpp运行程序,程序完全正常生成输出,但是当我使用命令提示符调用编译器时,我得到了这些提到的问题。
  2. 我使用的是Windows XP。
  3. 我还安装了msys
  4. enter image description here enter image description here


    更新(来自评论)

    Output Screen of Dependancy Walker

    我知道dependancy walker说我有依赖问题,但如果是这样的话,那么Dev-CPP如何在我的计算机上编译程序?如前所述,Dev-Cpp能够编译并运行写入其编辑器的代码。我最好的猜测是gcc检测到我的32位操作系统并添加一些切换到Dev-Cpp编译过程,如

    gcc -something -something my_program.c
    

    有人可以找到something的内容吗?

6 个答案:

答案 0 :(得分:2)

如果仔细查看依赖显示中的CPU列,您将看到您的程序已编译为x64二进制文件。看起来您的系统没有安装64位版本的Windows。

显然,你的gcc配置为默认生成x64二进制文件。使用-m32选项使其生成32位x86二进制文件。

答案 1 :(得分:2)

我遇到类似问题时,在四处寻找时遇到了这个问题。 我的程序看起来完全像这样,但是我在cmd中的命令是gcc Hello.c,在这种情况下,它将创建一个临时的a.exe文件,或者gcc Hello.c -o Hello在这种情况下,它将创建一个Hello.exe文件。如果我继续尝试运行它,它说访问被拒绝。我发现它具有实时扫描功能,是我的防病毒软件。关闭此功能后,它可以完美运行。

答案 2 :(得分:0)

此错误可能由以下几个问题引起:

1)文件已损坏,丢失或丢失 2)文件不是为您的Windows版本设计的 3)文件是病毒,蠕虫或其他恶意软件文件 4)硬件不兼容

我认为我们可以排除最后两个,即1和2。

1)文件损坏:如果您在创建exe时遗漏了使其工作所需的重要文件,则可能会发生这种情况。这些文件将在您的开发环境中(源文件,头文件等)。如果它们未正确导出,则可能会导致此问题。 缺少文件:在文件系统中搜索a.exe。在运行之前确保它确实存在。从开发环境运行它并不能保证它存在于您的文件系统中。

2)文件不适用于您的Windows版本:这实际上似乎是最可能的问题。例如,如果您正在编写程序以在64位版本的Windows上运行,则如果您有32位计算机,它将无法运行。此外,如果您使用的是最新版本(或更新版本)的dev-c,它可能会默认创建一个专为Windows Vista,7或8设计的exe。我相信在某些地方您可以更改此设置,但是我不是百分百肯定。我没有用过dev-c。查看设置/首选项/选项菜单,看看是否可以找到它为其创建的版本。我希望如果你把它改成XP,它会正常工作。

祝你好运!

来源:http://www.computerhope.com/issues/ch000726.htm

答案 3 :(得分:0)

我遇到了这个错误。我追溯到导致问题的bitdefender(antivirus)。我删除了bitdefender及其工作正常。 没有其他更改。

答案 4 :(得分:0)

electromorphous' 的答案继续, 如果您在 Windows 中,请在搜索栏中键入“病毒和威胁防护”,单击具有完全相同名称的选项。你会看到这样的界面,

enter image description here

点击 Open app,您的防病毒应用程序会弹出(在我的例子中是 McAfee),

enter image description here

通过点击左侧的三个点来点击 real-time scanning

enter image description here

点击蓝色的 turn off 按钮(并选择您想再次恢复的时间)关闭实时扫描,上面的答案已经提到了。

enter image description here

答案 5 :(得分:-1)

您必须关闭系统中安装的防病毒实时扫描功能 因为实时扫描持续性可以在您或PC使用文件时立即检查文件,从而保护您的PC免受病毒,间谍软件和其他威胁的侵害。 该文件以其对系统的威胁为前提执行,但事实并非如此,因此请关闭实时扫描功能,以便轻松执行它。