最近想要在mingw上搭建opengl环境,按照https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/上的操作获取了glad的文件,但是glfw则是下载的prebuild binaries。
有两点需要注意:
1.如果是以静态方式链接,需要同时链接opengl32和gdi32库(似乎还不止这两个,具体待定)。例:
g++ hello.cpp glad.c -Iinclude -Llib-mingw -lopengl32 -lgdi32 -lglfw3 -static -o hello.exe
以动态方式链接的话,例:
g++ hello.cpp glad.c -Iinclude -Llib-mingw -lglfw3dll -o hello.exe
2.采用动态方式链接时总是报undefined reference错误,确实是glfw相关的符号找不到。打开visual studio开发人员命令行工具,调用dumpbin:
dumpbin /symbols libglfw3dll.a
输出的符号列表中,unreference错误的符号是存在的。后来几经查询,发现mingw命令行运行的是32位环境,而链接的glfw的库是64位的。重新下载了32位的glfw库,链接通过。
另外可以参考链接:https://www.glfw.org/docs/latest/build_guide.html