使用MinGW编译时,我必须从MinGW bin目录复制某些dll文件,然后exe才能运行(即使使用“-static”和/或“-static-libstdc ++”)。
我该怎么改变这种情况?是否有特殊的MinGW版本需要使用?最终,我希望能够仅通过exe在目录中运行程序(而不需要设置任何Windows环境变量)。这些文件是:
- libstdc++-6.dll
- libgcc_s_seh-1.dll
- libwinpthread-1.dll
以下是我遵循的完整步骤:
- 打开Code::Blocks
- 选择“文件->新建->项目->控制台”
- 填写“Hello World”项目设置
- 右键单击项目->构建选项...->Hello World(根目标)->其他选项
- 在已经设置的“-fexceptions”下输入“-static”(或“-static-libstdc ++”)
- CTRL-F9:构建项目(不要执行)
- 在Windows资源管理器中导航到并运行生成的“Hello World.exe”文件。
- 当弹出消息显示“错误:计算机缺少libstdc++-6.dll”时,单击“确定”。
- 从/MinGW/bin/目录中复制“libstdc++-6.dll”到“Hello World.exe”目录中。
- 运行“Hello World.exe”
- 单击消息显示“错误:计算机缺少libgcc_s_seh-1.dll”的“确定”。
- 将“libgcc_s_seh-1.dll”复制到“Hello World.exe”目录中。
- 重复操作并最终也需要复制“libwinpthread-1.dll”。
查看消息
Hello World!
编辑:我的命令行是:
g++.exe -Wall -fexceptions -static -static-libgcc -static-libstdc++ -g -static-libgcc -static-libstdc++ -L. -c "C:\Users\______\Desktop\Hello World\main.cpp" -o obj\Debug\main.o
g++.exe -o "bin\Debug\Hello World.exe" obj\Debug\main.o
需要所有上述提到的 DLL 文件。为了保险起见,代码如下:
// main.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
msys/gcc
编译器进行构建?如果是这种情况,你应该使用mingw64终端并使用mingw64/mingw-w64-x86_64-gcc
编译器。 - Foad S. Farimani