本文介绍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 中禁用该选项,请执行以下步骤:
- 在 解决方案资源管理器中,右键单击项目节点,然后选择“ 属性 ”(Alt+Enter)。
- 在项目的 “属性页 ”对话框中,选择 “配置属性>C/C++>Code 生成 属性”页。
- 将 Spectre 缓解属性 设置为 “已禁用”。
- 选择“确定”,保存所做更改。
启用 Spectre 缓解措施
如果决定使用 Spectre 缓解,请确保安装包含正确的编译器和库组件,并支持 Spectre 缓解。
若要更新安装,请执行以下步骤:
- 打开 Visual Studio 安装程序。
- 选择使用的 Visual Studio 版本旁边的 “修改 ”按钮。
- 选择对话框顶部的 单个组件 选项卡。
- 在 “搜索组件 ”框中,输入 Spectre v14.2。
- 在 编译器、构建工具和运行时 部分,确保为所有构建目标的体系结构选择了 MSVC v142… Spectre 缓解库 选项。
- 若要使用 ATL 或 MFC,请为生成所针对的所有目标体系结构选择库,例如带有 Spectre 缓解措施的适用于最新 v142 生成工具的 C++ MFC(或工具集的相应版本)。 有关详细信息,请参阅 安装 MFC 和 ATL 库。
- 选择 “修改” 以安装所选组件。
指定编译器选项
如果启用 Spectre 缓解措施,请确保指定 /Qspectre
编译器选项。 有关详细信息,请参阅 /Qspectre 编译器选项。
若要指定 /Qspectre
编译器选项,请执行以下步骤:
在 解决方案资源管理器中,右键单击项目节点,然后选择“ 属性 ”(Alt+Enter)。
在项目的 “属性页 ”对话框中,选择 “配置属性>C/C++>Code 生成 属性”页。
将 Spectre 缓解措施 属性设置为以下值之一:
- 已启用
- /Qspectre-load 的所有负载
- /Qspectre-load-cf 的所有控制流负载
选择“确定”,保存所做更改。
适用于
MSBuild 的所有版本