一段时间不写 C++, 这天打开 CLion 的时候, 发现 CMake 在生成的时候报错, 问题出在链接的时候找不到 kernel32.lib 等库文件. 错误看起来和 这个 Stack Overflow 问题 里面的类似.

之后换了其他工具链和其他 IDE, 都是失败. 使用 Clang for MSVC 就是找不到库文件的问题. 而使用 MSVC 印象中似乎是 RC Pass 1: command failed (exit code 0) with the following output 之类的错误.

印象中最近并没有动过编译器相关的东西, 惟有的可能就是在 Visual Studio Installer 中升了个级.

不过由于不是很了解 Windows 上的编译器和构建环境等等, 对于这个完全是没有头绪的. 难办的是网上找到的类似问题的解决方案也不适用.

在打开 Visual Studio 进行实验的时候, 发现提示要登录. (印象中之前经历过未登录 Visual Studio 就不能使用的情况) 不过登录了之后, 问题好像也没有解决.

后来想起来, 有可能是 Windows SDK 的问题, 毕竟之前也遇到过和 Windows SDK 相关的情况 1, 于是打开 Visual Studio Installer, 选择现有的安装, 在右侧的安装详细信息一栏中, 取消勾选 “C++ 工具集” 下边现有的 Windows SDK (10.0.19041.0), 然后勾选其它的一个 Windows SDK (可以在当前栏目下选择, 也可以进入 “单个组件” 选项卡搜索 “Windows SDK” 并选择), 然后点击 🛡 修改 并等待更改完成.

Visual Studio Installer 中安装详细信息 "使用 C++ 的桌面开发" 下, 取消勾选现有的 Windows SDK, 并勾选新的一个 SDK

之后再测试问题就解决了.

看来 “重装解决问题” 确实是真理! 虽然最开始也想到了这个, 但是感觉完全重装 Visual Studio 太过麻烦, 还是执着地想找到其他解决的方式.

不过经过这么一次问题, 似乎对 Windows 上的构建环境又多了那么一点了解. 有时间再多了解一下吧, 比如这个 rc 命令, 是用来干什么的呢? 了解更多, 说不定下次就能更快推理出问题的所在.


2022-09-04 更新: 出于一些原因重装了 Visual Studio, 遇到了同样的问题, 默认安装配置之后, 依然会出现 “RC failed” 的问题.

解决方法类似:

  1. 进入 Visual Studio Installer, 选择现有的安装, 在右侧 “安装详细信息” 中的 “使用 C++ 的桌面开发” 下, 取消勾选现有的 Windows SDK, 点击 🛡 修改, 等待修改完成;
  2. 之后, 可以再次进入 Visual Studio, 这时界面顶部会提示安装 Windows SDK, 可以点击按照提示完成安装;
  3. 也可以在 Visual Studio Installer 界面取消勾选 SDK 后, 选中另外的 Windows SDK, 完成修改后尝试进行 CMake 生成, 如果有问题则再次尝试另外的 SDK.

  1. 之前由于没安装 Windows SDK, 在进入 Visual Studio 之后, 顶部会提示类似 “为了获得更好的针对 Windows 开发的体验, 建议安装 Windows SDK” 的话语, 点击即可直接安装 Windows SDK. ↩︎

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐