如何在PowerShell中用MinGW的g++链接GLEW、GLFW与OpenGL
我完全懂你不想被VS绑定的心情,咱们一步步把VS里的OpenGL配置转换成MinGW命令行的方式,这样你就能用自己喜欢的编辑器写代码,在PowerShell里编译了:
第一步:获取并配置MinGW-w64工具链
首先得装MinGW-w64(别用旧版MinGW,w64版本支持64位程序,适配现代Windows):
- 去MinGW-w64的官方发布页面选择适合的版本,推荐选
x86_64-posix-seh(posix支持更多编程特性,seh是更高效的异常处理方案) - 下载后解压到一个无空格的路径,比如
C:\mingw64 - 把
C:\mingw64\bin添加到系统的PATH环境变量中 - 验证配置:打开PowerShell输入
g++ --version,能输出版本信息就说明配置成功了
第二步:把VS配置转换成MinGW编译参数
你在VS里做的每一项配置,都对应MinGW编译命令的特定参数,一一对应如下:
- 额外包含目录 → 用
-I(大写字母i)指定头文件搜索路径,比如你加了GLEW和GLFW的include目录,就写成:-I"你的GLEW/include路径" -I"你的GLFW/include路径" - 库目录 → 用
-L指定库文件的搜索路径:-L"你的GLEW/lib路径" -L"你的GLFW/lib路径" - 依赖库 → 用
-l(小写字母L)指定要链接的库,注意要去掉库名的lib前缀和.lib后缀:opengl32.lib→-lopengl32glew32.lib→-lglew32glfw3.lib→-lglfw3
- DLL文件 → 和VS里的要求一样,把
glew32.dll(如果GLFW是动态库,还要glfw3.dll)放到生成的exe同目录,或者加到PATH环境变量里,否则运行程序会提示找不到DLL。
第三步:实际编译命令示例
假设你的GLEW在C:\libs\glew,GLFW在C:\libs\glfw,主代码文件是main.cpp,那PowerShell里的完整编译命令就是:
g++ main.cpp -I"C:\libs\glew\include" -I"C:\libs\glfw\include" -L"C:\libs\glew\lib" -L"C:\libs\glfw\lib" -lopengl32 -lglew32 -lglfw3 -o MyOpenGLApp.exe
参数解释:
g++:MinGW的C++编译器main.cpp:你的主源代码文件,如果有多个cpp文件,直接列在后面,比如main.cpp utils.cpp-o MyOpenGLApp.exe:指定生成的可执行文件名称
第四步:简化编译(可选)
每次敲长命令太麻烦?可以写个PowerShell脚本(比如命名为build.ps1),把固定路径和参数存起来:
# 配置你的库路径 $INCLUDE_PATHS = "-I""C:\libs\glew\include"" -I""C:\libs\glfw\include""" $LIB_PATHS = "-L""C:\libs\glew\lib"" -L""C:\libs\glfw\lib""" $LINK_LIBS = "-lopengl32 -lglew32 -lglfw3" # 编译命令 g++ main.cpp $INCLUDE_PATHS $LIB_PATHS $LINK_LIBS -o MyOpenGLApp.exe
之后在PowerShell里运行 .\build.ps1 就能一键编译了。
关键注意事项
- 一定要下载MinGW版本的GLEW和GLFW,别下成VS(MSVC)版本的,不然会出现链接错误
- 如果路径里包含空格,一定要用双引号把路径括起来,比如
-I"C:\Program Files\glew\include" opengl32.lib是Windows系统自带的库,不需要额外指定库目录,MinGW会自动找到它
内容的提问来源于stack exchange,提问作者MindSurferDev
相关产品推荐
相关产品推荐

