今天用 VS2017 编译程序时,发现出错了。原来编译是没有问题的,肯定是 VS2017 更新的缘故。
提示:
warning MSB8038: 已启用 Spectre 缓解,但找不到 Spectre 缓解库。验证 Visual Studio 工作负荷包括 Spectre 缓解库
fatal error LNK1104: 无法打开文件“LIBCMT.lib”
fatal error LNK1104: 无法打开文件“libcpmt.lib”
fatal error LNK1181: 无法打开输入文件“delayimp.lib”
解决办法:
删除
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cl.Common.props
文件此句:
<SpectreMitigation Condition="'%(ClCompile.SpectreMitigation)' == ''">$(SpectreMitigation)</SpectreMitigation>
就 OK 了。
如果你安装了 WDK ,也按此法删除 WDK 的 Spectre 缓解
文件默认位置:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Platforms\x64\ImportBefore\Default\Microsoft.Cpp.WDK.props
此方法也适用于 VS2019。
当然你也可以安装 Spectre 缓解库,来解决。这就无需多说了。