【发布时间】:2022-01-10 09:12:46
【问题描述】:
使用 MinGW 编译时,我必须在运行 exe 之前从 MinGW bin 目录中复制某些 dll 文件(即使使用“-static”和/或“-static-libstdc++”。) 我该如何改变呢?是否有我必须使用的特殊版本的 MinGW?最终,我希望能够在目录中除了 exe 之外什么都没有运行程序(并且没有设置 windows 环境变量。)这些文件是:
- libstdc++-6.dll
- libgcc_s_seh-1.dll
- libwinpthread-1.dll
这是我休闲的步骤的完整列表:
- 打开代码::Blocks
- 选择“文件->新建->项目->控制台”
- 填写项目“Hello World”的项目设置
- 右键Project->Build Options...->Hello World (Root target)->Other Options
- 在已设置的“-fexceptions”下输入“-static”(或“-static-libstdc++”)
- CTRL-F9:构建项目(不执行)
- 在 Windows 资源管理器中导航到并运行构建的“Hello World.exe”文件。
- 当弹出消息“错误:您的计算机中缺少 libstdc++-6.dll”时,单击“确定”。
- 将“libstdc++-6.dll”从 /MinGW/bin/ 目录复制到“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;
}
【问题讨论】:
-
听起来您想要做的是将所有内容捆绑到一个可重定位的可执行文件中。
-
我会在代码块之外构建它。您需要查看您的构建命令。