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

使用vcpkg管理GLFW+GLAD时出现undefined reference错误求助

解决Vcpkg清单模式下GLAD与MinGW编译器的链接错误

问题根源分析

你遇到的链接错误中,__security_cookie、sscanf_s、_RTC_CheckStackVars等符号都是MSVC编译器特有的运行时/安全机制,而你使用的是MinGW编译器。这说明Vcpkg默认安装的GLAD是针对MSVC(目标三元组x64-windows)编译的版本,和MinGW的二进制不兼容。另外你提到x64-windows目录无debug文件夹,也侧面印证了这一点——x64-windows是MSVC专属的三元组,MinGW对应的三元组是x64-mingw-dynamic或x64-mingw-static。

解决步骤

1. 清理现有依赖,重新安装MinGW版本的GLAD/GLFW

首先删除项目根目录下的vcpkg_installed文件夹,避免混用不同编译器的库文件。然后使用MinGW对应的三元组重新安装依赖:

# 动态库版本(推荐,和MinGW默认编译模式匹配)
vcpkg install --triplet x64-mingw-dynamic

# 若需静态库,使用:
# vcpkg install --triplet x64-mingw-static

2. 配置CLion的CMake工具链

在CLion中,确保CMake使用Vcpkg的MinGW工具链:

  • 打开File > Settings > Build, Execution, Deployment > CMake
  • 在CMake options中添加:
    -DCMAKE_TOOLCHAIN_FILE=[你的Vcpkg根目录]/scripts/buildsystems/vcpkg.cmake
    -DVCPKG_TARGET_TRIPLET=x64-mingw-dynamic
    
    (如果用静态库,把三元组改成x64-mingw-static)

3. 验证CMake配置(无需修改现有CMakeLists.txt)

你的现有CMakeLists.txt逻辑是正确的,find_package(glad CONFIG REQUIRED)会自动找到MinGW版本的GLAD目标,target_link_libraries中的glad::glad已经包含了必要的依赖。不过可以确认:

  • MinGW下OpenGL库的链接名是opengl32,你的配置已经包含,无需修改。

4. 重新构建项目

清理CLion的build目录(Build > Clean Project),然后重新构建,链接错误应该会消失。

额外说明

Vcpkg的自动依赖处理是基于目标三元组匹配的,如果你不指定MinGW的三元组,它会默认安装MSVC版本的库,导致跨编译器链接不兼容。后续添加其他库时,也要确保使用相同的MinGW三元组安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:59:51