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

使用CMake构建时链接器找不到Vulkan与GLFW的技术求助

解决CLion中MinGW编译Vulkan+GLFW+GLM的链接错误

错误根源

链接器找不到vulkan-1和glfw3库,核心原因是你使用MinGW编译器,但配置的是MSVC版本的库文件——两者二进制格式不兼容,MinGW无法识别MSVC的.lib文件。

解决步骤

1. 替换GLFW为MinGW兼容版本

  • 下载GLFW的MinGW预编译包(官网下载的压缩包中包含lib-mingw-w64目录),将CMake中GLFW的库路径从lib-vc2022替换为lib-mingw-w64。
  • MinGW下GLFW的库命名规则:静态库为libglfw3.a,动态库为glfw3dll.lib,链接时直接写glfw3即可。

2. 修正Vulkan库路径

Vulkan SDK内置了MinGW兼容的库,路径为C:/VulkanSDK/1.3.275.0/Lib/mingw,而非根目录的Lib(该目录是给MSVC用的)。

3. 修改CMakeLists.txt(两种可选方案)

方案一:手动指定兼容路径

cmake_minimum_required(VERSION 3.27)
project(LuxAegisClion)

set(CMAKE_CXX_STANDARD 20)

add_executable(LuxAegisClion main.cpp)

target_include_directories(LuxAegisClion PRIVATE
        C:/VulkanSDK/1.3.275.0/Include
        C:/Users/guilh/Documents/Libraries/glfw-3.3.9.bin.WIN64/include
        C:/Users/guilh/Documents/Libraries/glm
)

# 替换为MinGW对应的库路径
link_directories(LuxAegisClion PRIVATE
        C:/VulkanSDK/1.3.275.0/Lib/mingw
        C:/Users/guilh/Documents/Libraries/glfw-3.3.9.bin.WIN64/lib-mingw-w64
)

target_link_libraries(LuxAegisClion PRIVATE
        vulkan-1
        glfw3
)

方案二:用CMake自动查找(更规范)

借助find_package自动适配编译器,避免硬编码路径:

cmake_minimum_required(VERSION 3.27)
project(LuxAegisClion)

set(CMAKE_CXX_STANDARD 20)

add_executable(LuxAegisClion main.cpp)

# 自动查找Vulkan,兼容MinGW
find_package(Vulkan REQUIRED)
# 指定GLFW的MinGW版本配置文件路径
find_package(glfw3 REQUIRED PATHS "C:/Users/guilh/Documents/Libraries/glfw-3.3.9.bin.WIN64/lib-mingw-w64/cmake/glfw3")

# GLM是头文件库,直接包含
target_include_directories(LuxAegisClion PRIVATE
        C:/Users/guilh/Documents/Libraries/glm
)

# 链接CMake自动识别的兼容库
target_link_libraries(LuxAegisClion PRIVATE
        Vulkan::Vulkan
        glfw
)

额外注意事项

  • 如果使用动态库,需将glfw3.dll、vulkan-1.dll复制到可执行文件同目录,或添加到系统PATH中。
  • 确保清理之前的CMake缓存(删除cmake-build-debug目录)后重新构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:56:00