MSB8040

本文介绍MSB8040错误代码。

消息文本

MSB8040: Spectre-mitigated libraries are required for this project.

DESCRIPTION

如果项目需要 Spectre 缓解库(C/C++>Spectre 缓解 未设置为 “已禁用”),但未安装库,则会发生此错误。 有关详细信息,请参阅 Microsoft MFC 框架中的 Spectre 攻击缓解措施

决议

首先,确定是否要实施 Spectre 缓解措施,然后按照必要的步骤更新安装以解决错误。

禁用 Spectre 缓解措施

如果不想使用 Spectre 缓解,请在 Visual Studio 中禁用该选项。 对于命令行生成,请确认你未使用 /Qspectre 编译器选项或其变体 /Qspectre-load/Qspectre-load-cf

若要在 Visual Studio 中禁用该选项,请执行以下步骤:

  1. 解决方案资源管理器中,右键单击项目节点,然后选择“ 属性 ”(Alt+Enter)。
  2. 在项目的 “属性页 ”对话框中,选择 “配置属性>C/C++>Code 生成 属性”页。
  3. Spectre 缓解属性 设置为 “已禁用”。
  4. 选择“确定”,保存所做更改。

显示如何在 Visual Studio 中禁用 Spectre 缓解措施的屏幕截图。

启用 Spectre 缓解措施

如果决定使用 Spectre 缓解,请确保安装包含正确的编译器和库组件,并支持 Spectre 缓解。

若要更新安装,请执行以下步骤:

  1. 打开 Visual Studio 安装程序。
  2. 选择使用的 Visual Studio 版本旁边的 “修改 ”按钮。
  3. 选择对话框顶部的 单个组件 选项卡。
  4. “搜索组件 ”框中,输入 Spectre v14.2
  5. 编译器、构建工具和运行时 部分,确保为所有构建目标的体系结构选择了 MSVC v142… Spectre 缓解库 选项。
  6. 若要使用 ATL 或 MFC,请为生成所针对的所有目标体系结构选择库,例如带有 Spectre 缓解措施的适用于最新 v142 生成工具的 C++ MFC(或工具集的相应版本)。 有关详细信息,请参阅 安装 MFC 和 ATL 库
  7. 选择 “修改” 以安装所选组件。

显示如何更新安装以包含 Spectre 缓解库的屏幕截图。

指定编译器选项

如果启用 Spectre 缓解措施,请确保指定 /Qspectre 编译器选项。 有关详细信息,请参阅 /Qspectre 编译器选项。

若要指定 /Qspectre 编译器选项,请执行以下步骤:

  1. 解决方案资源管理器中,右键单击项目节点,然后选择“ 属性 ”(Alt+Enter)。

  2. 在项目的 “属性页 ”对话框中,选择 “配置属性>C/C++>Code 生成 属性”页。

  3. Spectre 缓解措施 属性设置为以下值之一:

  4. 选择“确定”,保存所做更改。

适用于

MSBuild 的所有版本