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

如何在CMake项目中修复GLAD相关的LNK2019链接错误?

解决LNK2019: 未解析gladLoadGLLoader符号的问题

你的错误核心是GLAD的函数实现没有被包含到项目的编译或链接流程中,gladLoadGLLoader是GLAD生成的OpenGL加载函数,你的Irix库目前只链接了GLFW、OpenGL和Freetype,完全没处理GLAD的代码或库。

问题排查点

  1. 你之前的CMake配置里误用了变量:${OPENGL_PACKAGE}是错误的,CMake的FindOpenGL模块提供的正确变量是${OPENGL_LIBRARIES}。
  2. 项目中缺少GLAD的编译或链接步骤,导致链接器找不到gladLoadGLLoader的实现。

具体解决方案

根据你使用GLAD的方式(源码/预编译库),选择对应方案:

方案1:直接将GLAD源码加入Irix库

如果你的Dependencies/src目录下有GLAD生成的glad.c文件,修改Irix/CMakeLists.txt:

add_library(Irix STATIC "Irix.cpp" "Irix.h" "${CMAKE_SOURCE_DIR}/Dependencies/src/glad.c")

# 查找OpenGL包
find_package(OpenGL REQUIRED)

# 链接依赖库,注意使用正确的OPENGL_LIBRARIES变量
target_link_libraries(Irix PRIVATE glfw3 ${OPENGL_LIBRARIES} freetype)

方案2:单独构建GLAD静态库

如果希望将GLAD作为独立库管理,修改根目录CMakeLists.txt,添加GLAD库的构建:

# ... 原有代码 ...

# 添加GLAD静态库
add_library(glad STATIC "${CMAKE_SOURCE_DIR}/Dependencies/src/glad.c")
# 为GLAD设置头文件目录,确保其他库能找到glad的头文件
target_include_directories(glad PUBLIC "${CMAKE_SOURCE_DIR}/Dependencies/include")

# ... 原有add_subdirectory代码 ...

然后修改Irix/CMakeLists.txt,链接GLAD库:

add_library(Irix STATIC "Irix.cpp" "Irix.h")

find_package(OpenGL REQUIRED)

# 新增glad库的链接
target_link_libraries(Irix PRIVATE glfw3 glad ${OPENGL_LIBRARIES} freetype)

方案3:使用预编译GLAD库

如果你的Dependencies/lib目录下有预编译的GLAD库(比如glad.lib或libglad.a),直接修改Irix/CMakeLists.txt,在链接列表中加入glad:

add_library(Irix STATIC "Irix.cpp" "Irix.h")

find_package(OpenGL REQUIRED)

# 链接GLAD预编译库
target_link_libraries(Irix PRIVATE glfw3 glad ${OPENGL_LIBRARIES} freetype)

额外检查

  • 确认Dependencies/include目录下存在glad子目录,且包含glad.h文件,确保头文件能被正确引用。
  • 如果你使用MSVC,注意区分Debug和Release版本的预编译库,避免库版本不匹配导致的链接错误。

内容的提问来源于stack exchange,提问作者Kane Mattsuki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:01:30