MSVCR C++ 不兼容XP情况的分析与解决
2019-10-21 本文已影响0人
Imjeef
新版VC增加了C++11特性,虽然微软已经添加了相应的_xp的SDK。
VS2013 v120_xp
VS2015 v140_xp
VS2017 v141_xp
经过验证一些特定的API在XP系统并不支持。
目前所知道XP不支持 mutex,thread,local_thread
要兼容XP系统,必须针对XP进行相应的更改。目前主要有两种方式:
1、降低VC版本,例如使用VC2010(v100)。
由于C++11的新特性,做降版本兼容会带来很多错误。
例如 不支持using语法,不支持删除标记 =delete等。
2、使用BOOST C++标准库,支持C++11较多的特性。弥补msvcr的不足。
BOOST标准库中包含了,mutex和thread等的支持。在不降低vc版本的情况下。同时保留C++11特性。
已知的特性
std::mutex boost::mutex
std::thread boost":thread
std::unique_lock boost::unique_lock
//std::condition_variable boost::condition_variable
boost官网:https://www.boost.org/