Windows下C++使用thread时无法识别thread和mutex相关库的解决
问题描述今天我在Windows下打算尝试C++多线程编程,在CLion上进行编码。CLion的C++编译器是正常的,以前也跑过好几个项目,使用其他STL库函数也正常,唯独使用thread时报无法识别的错,所有thread都划上了红线。如下图所示:其他错误信息包括但不限于:thread未定义No member named ‘thread’ in namespace ‘std’;‘thread’ un
问题描述
今天我在Windows下打算尝试C++多线程编程,在CLion上进行编码。CLion的C++编译器是正常的,以前也跑过好几个项目,使用其他STL库函数也正常,唯独使用thread时报无法识别的错,所有thread都划上了红线。如下图所示:
其他错误信息包括但不限于:
thread未定义
No member named ‘thread’ in namespace ‘std’;
‘thread’ undefined
找不到thread
mutex contiditional_variable未定义
Use of undeclared identifier ‘thread’; did you mean ‘fread’? (fix available)
问题解决过程
-
因为thread和mutex是C++11才引入的,所以一开始考虑的是不是CMakeList上没有加编译选项,于是加上
set(CMAKE_CXX_FLAGS$ {CMAKE_CXX_FLAGS} -std = c ++ 11)
经过一番尝试,发现并无效果。 -
后来受到博客CLion安装mingw并配置以支持c++11多线程编程的启发,重新安装mingw编译器,但是不成功。
又看到博客mingw-w64安装支持c++11中thread(windows下)的操作,发现关键是在安装mingw时需要将Thread选项设为posix。重新安装mingw解决问题。
问题解决,可以愉快多线程啦
总结
不能使用thread是因为mingw的编译器不支持thread,需要重新安装mingw,安装方法在引用的两篇博客里都有。同时需要确保建立工程时使用的是C++11及以上标准。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)