“Windows 无法访问指定的设备.....” C++ 中的错误
Posted
技术标签:
【中文标题】“Windows 无法访问指定的设备.....” C++ 中的错误【英文标题】:"windows cannot access the specified device....." error in c++ 【发布时间】:2013-07-12 13:31:54 【问题描述】:我是在 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;
我用相同的命令编译它,但是当我使用命令行执行它时,它显示错误“访问被拒绝,所以我转到该文件夹并运行与 “以管理员身份运行”相同的可执行文件 它显示一个消息框,其中包含消息 windows 无法访问指定的设备路径或文件。您可能没有适当的权限
---编辑--
以下代码不起作用:-
int main ()
int k;
return 0;
但是这个程序正在运行:-
int main()
int k;
k = 0;
return 0;
【问题讨论】:
只是为了让您做好准备:Microsoft 习惯于将 AFX 和其他各种与 MFC 相关的标头保持专有。这意味着微软提供的许多 C++ 编程示例将永远在 MinGW 上编译。但是标准的 Windows C API 应该得到很好的支持。 @PP。我知道我的程序从消息框到 AfxLoadLibrary() 有很多“AFX”的东西,但我们找到了相同的替代方案! 尝试稍后重新运行。 @BLUEPIXY 不工作!!我在过去 2 天里一直关闭我的电脑,但观察到同样的错误!! 你会在系统文件夹中工作吗? 【参考方案1】:如果您收到此访问被拒绝错误,那么最可能的原因是可执行文件在另一个进程中打开,可能是链接器或调试器。尝试安装Process Explorer 并点击Ctrl+F
并输入您的.exe 名称。这应该显示 .exe 文件打开的进程。杀死这些进程(或者如果您仍在调试,请先结束调试)。然后您应该能够再次构建。
请注意,这与 Microsoft API 无关,因为无论如何您都在使用 gcc。
编辑:如果没有持有 .exe 的进程,则可能存在其他类型的权限问题。 .exe 文件是否存在?你可以删除文件并重建吗?要尝试的另一件事是运行 Process Monitor 并过滤 .exe 的名称——这可能会显示常规的权限被拒绝错误,或者可能会显示其他错误,例如共享冲突。
【讨论】:
【参考方案2】:注意:-请给我一个建议,“minGW 是跨平台工作的最佳编译器吗?或者还有其他什么东西吗?”
没有。那里没有别的东西。
使用目标平台上可用的任何编译器,确保您的代码在所有编译器上都能编译。 不惜一切代价避免使用特定于平台和编译器的代码(使用跨平台框架)。
WinGW安装成功
不同站点提供了许多不同版本的mingw。如果您使用 mingw-get 从 mingw.org 安装编译器,它可能会工作。如果您从其他站点安装 mingw,它可能会或可能不会工作。
我使用以下命令编译它,
使用构建系统。 cmake、qmake 或类似的东西。
它显示错误“访问被拒绝
启动 process monitor 并查看它在哪个系统调用之后终止。也可能是您的防病毒软件干扰了您的程序,或者您的路径中可能有一些杂散的 dll 或类似的东西。
【讨论】:
【参考方案3】:检查可执行文件所在的整个文件夹的权限。如果文件夹不允许权限,则尝试“以管理员身份运行”没有任何效果。
【讨论】:
是的,我已经这样做了!!!我的“#include它与您的代码没有任何关系。这是一个环境问题,您的用户帐户对硬盘上一个或多个目录的权限有些混乱。一般诊断是程序的默认工作目录不允许读取或列表访问。
一个可能的起点是使用资源管理器并右键单击安装 MinGW 的目录。使用安全选项卡并确保您的用户帐户已启用所有权限。进一步缩小范围,尝试从命令提示符运行程序,使用不同的目录作为默认目录。
【讨论】:
以上是关于“Windows 无法访问指定的设备.....” C++ 中的错误的主要内容,如果未能解决你的问题,请参考以下文章