"Windows 无法访问指定的设备....."C++ 中的错误

"windows cannot access the specified device....." error in c++

本文关键字:C++ 错误 Windows 访问      更新时间:2023-10-16

我是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++-静态libgcc-静态libstdc++Main.cpp

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

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

int main ()
{
  return 0;
}

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

---编辑--

以下代码不起作用:-

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

但是这个程序正在运行:-

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

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

请注意,这与MicrosoftAPI无关,因为在任何情况下都使用gcc。

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

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

没有。外面什么都没有。

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

我成功安装了WinGW

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

我使用以下命令编译它,

使用生成系统。cmake、qmake或类似的东西。

它显示错误"拒绝访问

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

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

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

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