Win11下Msys2中Clang19.1.7编译CPP项目遇oldnames.lib缺失错误求解决
解决Msys2中Clang链接
oldnames.lib缺失的问题 1. 安装对应Windows SDK兼容组件
在Msys2的UCRT64终端(Clang推荐使用该环境)执行以下命令,安装MinGW/UCRT的CRT组件,oldnames.lib的兼容实现包含在这些包中:
pacman -S mingw-w64-ucrt-x86_64-winpthreads-git mingw-w64-ucrt-x86_64-crt
2. 验证并配置库路径
- 执行
echo $LIBRARY_PATH,确认输出包含/ucrt64/lib路径 - 如果路径缺失,手动添加环境变量:
export LIBRARY_PATH=/ucrt64/lib:$LIBRARY_PATH
可将该命令写入~/.bashrc或~/.zshrc,实现终端启动时自动配置。
3. 编译时显式指定CRT类型
编译命令中添加参数,强制Clang使用MinGW/UCRT的CRT,避免链接器查找MSVC的旧库:
- 使用libc++的命令示例:
clang++ -o your_program your_code.cpp -stdlib=libc++
- 使用GNU CRT的命令示例:
clang++ -o your_program your_code.cpp -lgcc -lmingw32
4. 修复包安装异常(若上述步骤无效)
如果包缓存或安装不完整,执行以下命令更新并重装Clang相关包:
pacman -Syu pacman -S --overwrite '*' mingw-w64-ucrt-x86_64-clang
补充:
oldnames.lib是MSVC为兼容旧代码提供的库,Msys2环境下的Clang应优先使用MinGW/UCRT提供的CRT实现,无需依赖MSVC原生组件。
内容的提问来源于stack exchange,提问作者sudo
相关产品推荐
相关产品推荐

