今天用 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 緩解庫,來解決。這就無需多說了。