MinGW编译GLFW程序提示libgdi32.a不兼容及未定义引用如何解决
解决方案
1 修复MSYS2 64位依赖包
你当前遇到的libgdi32.a不兼容问题是因为安装的运行时包架构不对,操作步骤如下:
- 确保你打开的终端是「MSYS2 MinGW 64-bit」,不要使用32位终端或者默认MSYS终端
- 如果你之前手动修改过
C:\msys64\mingw64\lib下的库文件,先删除你手动放入的32位libgdi32.a - 执行命令重装64位运行时库:
pacman -Sy mingw-w64-x86_64-crt-git --overwrite '*'
- 验证libgdi32架构:执行以下命令,输出中存在
architecture: i386:x86-64即为正确64位版本
objdump -f C:\msys64\mingw64\lib\libgdi32.a
2 修正编译命令的链接顺序
GCC/G++的链接规则为源文件/目标文件必须放在依赖库的前面,且上层依赖库要放在底层依赖库前面,你原命令的顺序完全错误,还额外引入了C:\msys64\mingw64\lib\*.a的冲突文件,修正后的编译命令如下:
g++.exe D:\Privrate\Project\OpenGL\tutorial_1.cpp -IC:\msys64\mingw64\include -LC:\msys64\mingw64\lib -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32 -luser32 -lshell32 -o D:\Privrate\Project\OpenGL\build\tutorial_1.exe
内容的提问来源于stack exchange,提问作者Roharui
相关产品推荐
相关产品推荐

