Windows下C++使用thread時無法識別thread和mutex相關庫的解決

問題描述

今天我在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)

問題解決過程

  1. 因爲thread和mutex是C++11才引入的,所以一開始考慮的是不是CMakeList上沒有加編譯選項,於是加上
    set(CMAKE_CXX_FLAGS$ {CMAKE_CXX_FLAGS} -std = c ++ 11)
    經過一番嘗試,發現並無效果。

  2. 後來受到博客CLion安裝mingw並配置以支持c++11多線程編程的啓發,重新安裝mingw編譯器,但是不成功。

    又看到博客mingw-w64安裝支持c++11中thread(windows下)的操作,發現關鍵是在安裝mingw時需要將Thread選項設爲posix。重新安裝mingw解決問題。
    在這裏插入圖片描述
    問題解決,可以愉快多線程啦
    在這裏插入圖片描述

總結

不能使用thread是因爲mingw的編譯器不支持thread,需要重新安裝mingw,安裝方法在引用的兩篇博客裏都有。同時需要確保建立工程時使用的是C++11及以上標準。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章