使用g++手动链接glfw、glad库解决undefined reference报错
问题原因
你遇到的undefined reference报错是链接阶段无法找到依赖函数的实现导致的,现有编译命令存在3个遗漏:
- 未将
glad.c源文件加入编译列表,glad库的实现逻辑全部在该源文件中 - 未指定glfw库文件的搜索路径,g++无法定位到你存放MinGW版本glfw库的文件夹
- 未显式声明需要链接的glfw库及glfw依赖的Windows系统原生库
正确编译命令
首先确保你在C:\learn_opengl路径下执行命令,且提前创建好dist目录:
g++ -Wall -g src\main.cpp C:\cpp_lib\glad\src\glad.c ^ -I C:\cpp_lib\glfw\include ^ -I C:\cpp_lib\glad\include ^ -L C:\cpp_lib\glfw\lib-mingw-w64 ^ -lglfw3 -lopengl32 -lgdi32 -luser32 -lkernel32 ^ -o dist\main.exe
如果要使用动态链接的glfw,把-lglfw3替换为-lglfw3dll,编译完成后将C:\cpp_lib\glfw\lib-mingw-w64\glfw3.dll复制到dist目录和main.exe同路径即可运行。
参数说明
C:\cpp_lib\glad\src\glad.c:将glad的实现源文件加入编译流程-L参数:指定第三方库文件的搜索路径,这里对应MinGW版本的glfw库存放目录-l参数:声明需要链接的库,注意库名不需要加前缀lib和后缀.a
内容的提问来源于stack exchange,提问作者David C
相关产品推荐
相关产品推荐

