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

CMake/MSBuild中GLAD与OpenGL、GLFW链接时出现链接错误

GLAD链接错误(LNK2019: __imp__gladLoaderLoadGL)的排查与解决

你在基于CMake搭建的OpenGL项目中使用GLFW和GLAD,当前CMake配置如下:

cmake_minimum_required(VERSION 3.16)  # Specify the project name and the languages
project(MyApp LANGUAGES CXX)

# Set C++ standard
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Include directories
include_directories(MyApp PUBLIC 
    ${CMAKE_SOURCE_DIR}/Libraries/include
    ${CMAKE_SOURCE_DIR}/Resources
    ${CMAKE_SOURCE_DIR}/Shaders
)

# Add executable
add_executable(MyApp  
    main.cpp
    stb.cpp
    folder/File.cpp
)

# Link libraries
target_link_libraries(MyApp PRIVATE 
    opengl32.lib
    ${CMAKE_SOURCE_DIR}/Libraries/lib/glfw3.lib
)

遇到链接错误:

LNK2019: unresolved external symbol __imp__gladLoaderLoadGL

你已通过Vcpkg构建GLFW,确认GLAD已安装并引入,手动添加glad.c后问题仍存在。

错误原因分析

  • CMake语法错误:include_directories命令无需指定目标(你写了include_directories(MyApp PUBLIC ...)),该写法无效,可能导致GLAD头文件未被正确包含,或glad.c编译时找不到对应头文件。
  • glad.c未正确纳入编译:即使手动添加,可能存在路径错误,或CMake未实际将其加入编译流程。
  • C/C++编译兼容问题:glad.c是C语言文件,而项目仅声明LANGUAGES CXX,CMake默认不会处理C文件,导致glad.c未被编译。
  • GLAD文件问题:若手动下载GLAD而非通过包管理工具,可能未正确生成或编译glad.c,导致符号缺失。

正确的CMake配置方案

方案1:手动管理GLAD文件(适用于已下载glad.c/glad.h的场景)

修正CMake配置错误,确保glad.c被正确编译:

cmake_minimum_required(VERSION 3.16)
project(MyApp LANGUAGES CXX C)  # 添加C语言支持,适配glad.c的C文件属性

# Set C++ standard
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 替换错误的include_directories,使用target_include_directories为目标指定包含路径
target_include_directories(MyApp PUBLIC 
    ${CMAKE_SOURCE_DIR}/Libraries/include
    ${CMAKE_SOURCE_DIR}/Resources
    ${CMAKE_SOURCE_DIR}/Shaders
)

# 确保glad.c被添加到可执行目标(替换为你的glad.c实际路径)
add_executable(MyApp  
    main.cpp
    stb.cpp
    folder/File.cpp
    path/to/glad.c  # 此处必须填写正确的glad.c路径
)

# 链接库
target_link_libraries(MyApp PRIVATE 
    opengl32.lib
    ${CMAKE_SOURCE_DIR}/Libraries/lib/glfw3.lib
)

方案2:使用Vcpkg管理GLAD(更规范,避免手动文件维护)

既然已用Vcpkg构建GLFW,建议同时用Vcpkg安装GLAD,通过CMake的find_package自动引入:

  1. 先通过Vcpkg安装GLAD:
vcpkg install glad:x64-windows  # 根据你的平台调整,如x86-windows
  1. 修改CMake配置:
cmake_minimum_required(VERSION 3.16)
project(MyApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 若未全局配置Vcpkg,需指定工具链文件路径
# set(CMAKE_TOOLCHAIN_FILE "path/to/vcpkg/scripts/buildsystems/vcpkg.cmake")

# 查找GLFW和GLAD
find_package(glfw3 CONFIG REQUIRED)
find_package(glad CONFIG REQUIRED)

# 添加可执行目标
add_executable(MyApp  
    main.cpp
    stb.cpp
    folder/File.cpp
)

# 指定自定义资源、着色器的包含路径
target_include_directories(MyApp PUBLIC 
    ${CMAKE_SOURCE_DIR}/Resources
    ${CMAKE_SOURCE_DIR}/Shaders
)

# 链接Vcpkg提供的库
target_link_libraries(MyApp PRIVATE 
    opengl32.lib
    glfw
    glad::glad
)

额外排查步骤

  • 确认glad.c的路径完全正确,比如若它在Libraries/src/glad.c,需填写完整路径。
  • 检查调用gladLoaderLoadGL()的代码是否正确包含头文件#include <glad/glad.h>,且该头文件路径已被CMake正确包含。
  • 删除CMake缓存(删除build文件夹)后重新生成项目,避免旧配置残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:22:46