You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GLAD无法调用OpenGL命令,编译出现未定义引用错误求助

问题解决:GLAD函数未定义引用错误

核心问题

你的编译命令(Makefile)存在两个关键错误:

  1. 未将glad.c纳入编译流程,导致GLAD的函数实现没有被编译进程序,编译器找不到gladLoadGL等函数的定义。
  2. 编译参数使用错误:-L是用来指定库文件的搜索路径,不是用来添加源文件的;同时缺少对GLFW导入库libglfw3dll.a的链接。

修正方案

1. 替换Makefile内容

将现有Makefile的命令替换为以下内容:

all:
	g++ GraphicsTest.cpp glad.c -g -I include -lglfw3dll -o GraphicsTest.exe

参数解释:

  • -I include:告诉编译器从include目录搜索头文件,确保能找到glad.h、glfw3.h等文件
  • glad.c:将GLAD的实现文件加入编译,提供gladLoadGL等函数的定义
  • -lglfw3dll:链接GLFW的导入库libglfw3dll.a,让程序能正确调用glfw3.dll中的函数
  • -o GraphicsTest.exe:指定生成的可执行文件名称

2. 头文件包含顺序

确保在GraphicsTest.cpp中,先包含glad.h,再包含glfw3.h,示例:

#include <glad/glad.h>
#include <GLFW/glfw3.h>

GLAD需要先定义OpenGL函数指针,覆盖GLFW中默认的OpenGL函数声明,避免冲突。

3. 关于libglfw3dll.a的作用

这个文件是glfw3.dll对应的动态导入库,必须链接它才能让程序正确找到glfw3.dll中的函数入口,属于GLFW动态链接时的必要文件,不能删除。

验证步骤

  1. 执行make命令重新编译项目
  2. 确保glfw3.dll和生成的GraphicsTest.exe在同一目录下
  3. 运行程序,此时GLAD和OpenGL相关函数应该能正常链接运行

内容的提问来源于stack exchange,提问作者Sad Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:01:55