1

我是在 Visual Studio 2010 上工作的 MFC 人,使用 Visual Studio 创建一些可执行文件!但是在 linux 和 mac 上,我的可执行文件不能像往常一样在 windows 上工作!!。所以我决定使用“MinGW”编译器来创建可执行文件。

注意:-请给我一个建议,“minGW 是跨平台工作的最佳编译器吗?或者还有其他什么东西吗??”

我在我的 C 驱动器上成功安装了 WinGW 编译器并开始使用以下程序..

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

我使用以下命令编译它,

g++ -static-libgcc -static-libstdc++ Main.cpp

我在同一个文件夹中找到了一个名为 a.exe 的可执行文件 :)。工作正常:)

但是一段时间后,我决定以以下方式修改相同的程序,例如,

int main ()
{
  return 0;
}

我用相同的命令编译它,但是当我使用命令行执行它时,它显示错误“访问被拒绝,所以我转到该文件夹​​并运行与“以管理员身份运行”相同的可执行文件,它显示一个带有消息窗口的消息框无法访问指定设备路径或文件。您可能没有适当的权限

- -编辑 -

以下代码不起作用:-

 int main ()
 {
      int k;
      return 0;
  }

但这个程序工作: -

int main()
{
  int k;
  k = 0;
  return 0;
}
4

4 回答 4

2

如果您收到此访问被拒绝错误,那么最可能的原因是可执行文件在另一个进程中打开,可能是链接器或调试器。尝试安装Process Explorer并点击Ctrl+F并输入您的 .exe 名称。这应该显示 .exe 文件打开的进程。杀死这些进程(或者如果您仍在调试,请先结束调试)。然后,您应该能够再次构建。

请注意,这与 Microsoft API 无关,因为无论如何您都在使用 gcc。

编辑:如果没有持有 .exe 的进程,则可能存在其他类型的权限问题。.exe 文件是否存在?你可以删除文件并重建吗?要尝试的另一件事是运行进程监视器并过滤 .exe 的名称——这可能会显示常规的权限被拒绝错误,或者可能会显示另一个错误,例如共享冲突。

于 2013-07-15T08:39:55.140 回答
1

注意:-请给我一个建议,“minGW 是跨平台工作的最佳编译器吗?或者还有其他什么东西吗??”

不,那里没有别的东西。

使用目标平台上可用的任何编译器,确保您的代码在所有编译器上编译。不惜一切代价避免特定于平台和特定于编译器的代码(使用跨平台框架)。

我成功安装了 WinGW

不同站点提供了许多不同版本的 mingw。如果您使用 mingw-get 从 mingw.org 安装编译器,它可能会工作。如果您从其他站点安装 mingw,它可能会或可能不会工作。

我使用以下命令编译它,

使用构建系统。cmake、qmake 或类似的东西。

它显示错误“访问被拒绝

启动进程监视器并查看它在哪个系统调用之后终止。您的防病毒软件也可能会干扰您的程序,或者您的路径中可能有一些杂散的 dll 或类似的东西。

于 2013-07-16T08:32:16.640 回答
0

检查可执行文件所在的整个文件夹的权限。如果文件夹不允许权限,则尝试“以管理员身份运行”没有任何效果。

于 2013-07-12T13:39:56.957 回答
0

它与您的代码没有任何关系。这是一个环境问题,您的用户帐户对硬盘上一个或多个目录的权限有些混乱。一般诊断是程序的默认工作目录不允许读取或列表访问。

一个可能的起点是使用资源管理器并右键单击安装 MinGW 的目录。使用安全选项卡并确保您的用户帐户已启用所有权限。进一步缩小范围,尝试从命令提示符运行程序,使用不同的目录作为默认目录。

于 2013-07-16T08:22:24.717 回答