CMake使用VS2010编译报错:cl.exe损坏、链接无法打开kernel32.lib
解决方案
- 修正VC环境变量配置架构
你之前执行vcvarsall.bat未指定架构参数,默认生成32位编译环境,和你指定的Windows-x64-VS100目标架构不匹配,导致链接器查找32位路径下的kernel32.lib失败。
在PowerShell中执行以下命令初始化64位编译环境:cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64
执行完成后再继续后续编译操作。 - 显式指定Windows SDK版本与库路径
VS2010默认关联Windows SDK v7.0A,你安装的8.0/8.1版本SDK无法被自动识别,需要在cmake命令中新增两个参数指定SDK配置:
-DCMAKE_SYSTEM_VERSION=8.1 -DCMAKE_LIBRARY_PATH="C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64"
其中路径替换为你本地kernel32.lib实际存在的x64架构对应目录即可。
- 清理残留缓存后重新执行生成
先删除build-dir目录下的所有残留文件,避免之前的错误配置缓存干扰编译流程,再重新执行cmake命令。 - 手动校验LIB环境变量
环境初始化完成后,在PowerShell中执行echo $env:LIB检查输出路径是否包含kernel32.lib所在目录,若缺失可手动追加:$env:LIB += ";C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64"
内容的提问来源于stack exchange,提问作者Sinwan Mohammed
相关产品推荐
相关产品推荐

