VS2019+WDK10,缺少适用于 16.11 的 Spectre-mitigated MSVC 库,为什么?

VS2019+WDK10, missing Spectre-mitigated MSVC library for 16.11, why?

这里有些奇怪的东西。我正在尝试使用 VS2019 16.11.5 和 WDK 10.0.19041.685(也称为版本 2004 2020 年 12 月更新)构建 KMDF 示例驱动程序。

首先,我收到编译错误提示我需要下载 Spectre-mitigated MSVC 库。

好吧,我试过了,但是遇到了一个新问题。 VS2019(16.11.5) 安装程序不显示 exact 16.11 的 MSVC Spectre-mitigated MSVC 库版本。貌似它提供的最新的是16.10().

下载 16.10 并继续尝试,仍然编译错误。

我查看了我的 D:\VSIDE\VS2019\VC\Tools\MSVC 文件夹,看到列出了两个 版本 的 MSVC 库,14.29.3013314.29.30037。后者是带有幽灵库的那个(所以它大了 600MB+)。

但是,KMDF 构建工具坚持要在 newer 14.29.30133 文件夹中找到 MSVC 库,因此仍然找不到 Spectre-mitigated 库。

我知道我可以手动将所需文件从 14.29.30037 复制到 14.29.30133 以继续操作。但这是这样做的好方法,还是 Microsoft 工具集错误?

请问其他内核驱动开发者是如何解决这个问题的。谢谢。

好吧,几天后,我找到了解决此问题的两个解决方法。

首先,如 Hans Passant 所述,禁用 .vcxproj 中的 Spectre 库。这可以从 UI.

配置

其次,明确 select 当前项目的 MSVC 库版本。这也可以在项目设置中配置 UI.

==== 2022.02.11 更新====

终于搞定了,版本号为14.29.30133的Spectre-lib叫做“(Latest)”,所以它被列在上面最老的版本,这就打败了新手。使用这个,问题就解决了。

当然,仅仅将其标记为“(最新)”是愚蠢的。他应该将其命名为 MSVC v142 - VS2019 C++ x64/x86 Spectre-mitigated libs (v14.29-16.11)(Latest)" .