問題描述
今天我在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及以上標準。