Windows编译Vengi Voxel遇LNK1104:缺失clang_rt.asan_static_runtime_thunk-x86_64.lib
解决LINK错误LNK1104:找不到clang_rt.asan_static_runtime_thunk-x86_64.lib
核心结论
clang_rt.asan_static_runtime_thunk-x86_64.lib 和你找到的 clang_rt.asan_static-x86_64.lib 不通用:
- 前者是AddressSanitizer(ASAN)专为MSVC编译环境提供的静态运行时转接库,负责衔接Clang的ASAN逻辑与MSVC运行时;
- 后者是Clang编译器自身的ASAN静态库,仅适用于纯Clang编译场景,无法直接替换前者用于MSVC链接过程。
获取及解决方法
1. 重新安装匹配版本的LLVM
确保安装的LLVM版本与VS2022、CMake版本兼容(建议使用LLVM 14.0+稳定版),且安装时勾选完整组件或明确选中对应ASAN组件:
- 运行LLVM安装包,在“Select Components”步骤中展开“Runtime Libraries”,勾选“AddressSanitizer for MSVC”;
- 安装完成后,检查
C:\Program Files\LLVM\lib\clang\<版本号>\lib\windows目录下是否存在clang_rt.asan_static_runtime_thunk-x86_64.lib。
2. 调整CMake编译配置
如果不需要ASAN功能,可直接关闭该选项绕过问题:
cmake -S . -B build -G Ninja -DENABLE_ASAN=OFF
若必须启用ASAN,需显式指定LLVM路径,确保CMake能定位到正确的库文件:
cmake -S . -B build -G Ninja -DENABLE_ASAN=ON -DLLVM_DIR="C:/Program Files/LLVM/lib/cmake/LLVM"
3. 从LLVM源码编译生成库文件
若官方安装包未包含目标库,可自行编译LLVM源码:
- 克隆LLVM项目仓库,切换至对应稳定版本分支;
- 用CMake配置编译选项,开启
LLVM_ENABLE_PROJECTS="clang"和COMPILER_RT_BUILD_ASAN=ON,并指定针对MSVC环境编译; - 编译完成后,从
build\lib\clang\<版本号>\lib\windows目录中提取目标库文件。
内容的提问来源于stack exchange,提问作者Harry McKenzie
相关产品推荐
相关产品推荐

