我是视觉工作室2010的MFC人,使用visual studio创建一些可执行文件!!但在Linux和Mac上,我的可执行文件不像往常一样工作! 所以我决定使用“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;
}
答案 0 :(得分:2)
如果您收到此拒绝访问错误,则最可能的原因是可执行文件在另一个进程中打开,可能是链接器或调试器。尝试安装Process Explorer并点击Ctrl+F
并输入您的.exe名称。这应该显示.exe文件打开的进程。杀死这些进程(或者如果你还在调试,那么先调试)。然后你应该能够再次构建。
请注意,这与Microsoft API无关,因为在任何情况下,您都在使用gcc。
编辑:如果没有进程持有.exe,那么可能存在其他类型的权限问题。 .exe文件是否存在?你能删除文件并重建吗?另一件事是运行Process Monitor并过滤.exe的名称 - 可能会显示常规权限被拒绝错误,或者可能是另一个错误,例如共享冲突。
答案 1 :(得分:1)
注意: - 请给我一个建议是,“minGW是最好的交叉平台工作编译器吗?还是其他任何东西都存在?”
没有。那里没有别的东西。
使用目标平台上可用的任何编译器,确保您的代码在所有这些编译器上编译。 不惜一切代价避免使用特定于平台和编译器的代码(使用跨平台框架)。
我成功安装了WinGW
不同网站提供了许多不同版本的mingw。如果你使用mingw-get从mingw.org安装编译器,它可能会工作。如果您从其他网站安装mingw,它可能会也可能不会。
我使用以下命令
编译它
使用构建系统。 cmake,qmake或类似的东西。
它显示错误“访问被拒绝
启动 process monitor ,看看它终止后的系统调用。您的防病毒软件也可能会干扰您的程序,或者您的路径中可能存在一些迷路dll。
答案 2 :(得分:0)
检查可执行文件所在的整个文件夹的权限。如果文件夹不允许权限,则尝试“以管理员身份运行”没有任何效果。
答案 3 :(得分:0)
它与您的代码没有任何关系。这是一个环境问题,对于您的用户帐户对硬盘上的一个或多个目录的权限,这一点很糟糕。通用诊断是程序的默认工作目录不允许读取或列表访问。
可能的起点是使用资源管理器并右键单击安装MinGW的目录。使用“安全”选项卡,确保您的用户帐户已启用所有权限。进一步缩小范围,尝试从命令提示符运行程序,使用不同的目录作为默认目录。