介绍
据百度介绍,缓解是针对硬件漏洞的一种软件规避方法。 根据微软的说法,它默认是关闭的(MSVC编译器选项/)。 介绍结束。
但
据说安装WDK后,会有一个bug导致缓解默认开启。 如果没有安装带有缓解措施的库,编译会失败,如下图:
解决方案一
简单安装一个带有缓解功能的库,就是缓解漏洞的安全风险。 安装它来达到缓解效果也不是什么坏事。 直接点击【修改】、【单个组件】就会出现一个带有缓解的库:
是否要安装Arm版本取决于您的需要。 应该适合、IOS、嵌入式开发。 PC一般不是ARM。
解决方案2
为难找到一个论坛,有人说安装了WDK,里面的一些prop文件开启了缓解选项,导致VS默认开启缓解。
在F:\\2017\\\IDE\VC\\\{ARM|AM64|Win32|x64}\\\.Cpp.WDK.props
中间目录根据不同平台有4个子目录。 我只更改了 Win32 和 x64,保留了 ARM 的。 你可以弄清楚。 ++打开.Cpp.WDK.props文件,内容如下:
<_NT_TARGET_VERSION_WIN10_RS5>0xA000006
<_NT_TARGET_VERSION_WIN10_RS4>0xA000005
<_NT_TARGET_VERSION_WIN10_RS3>0xA000004
<_NT_TARGET_VERSION_WIN10_RS2>0xA000003
<_NT_TARGET_VERSION_WIN10_RS1>0xA000002
<_NT_TARGET_VERSION_WIN10_TH2>0xA000001
<_NT_TARGET_VERSION_WIN10>0x0A00
<_NT_TARGET_VERSION_WINV63>0x0603
<_NT_TARGET_VERSION_WIN8>0x0602
<_NT_TARGET_VERSION_WIN7>0x0601
<_NT_TARGET_VERSION_VISTA>0x0600
<_NT_TARGET_VERSION_LONGHORN>0x0600
<_NT_TARGET_VERSION_NT4>0x0400
注释掉最接近的,重新启动 VS,新项目将默认禁用缓解功能。 如果旧项目在属性页上启用,它将覆盖此处的设置,您可能仍需要手动更改。
CMake
The CXX compiler identification is unknown
The C compiler identification is unknown
CMake Error at CMakeLists.txt:6 (project):
No CMAKE_CXX_COMPILER could be found.
CMake Error at CMakeLists.txt:6 (project):
No CMAKE_C_COMPILER could be found.
Configuring incomplete, errors occurred!
See also "H:/uchardet-0.0.7/build/CMakeFiles/CMakeOutput.log".
See also "H:/uchardet-0.0.7/build/CMakeFiles/CMakeError.log".
行号不一定是第6行。反正编译器识别不了,找不到。 我认真对待它。 直到我按照提示查看 .log 并看到它说缓解已启用,我才想起如果启用了它就会编译。 然而,我意识到并不是CMake真的不识别MSVC,而是CMake用来测试编译器编译的示例代码。 但是,CMake 无法识别编译器。 按照上述方法处理后即可识别。