当前位置: 代码迷 >> 综合 >> Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)
  详细解决方案

Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)

热度:84   发布时间:2023-10-14 23:00:03.0

文章目录

    • 说明
    • 问题关键所在
    • 正确做法
      • 1. 安装高版本的 MinGW
      • 2. 配置正确的编译选项
    • 其他

说明


主要参考链接:

  • https://stackoverflow.com/questions/43658560/i-installed-mingw32-pthreads-w32-but-i-still-cannot-compile-stdmutex

Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)

  • c++11 thread --多线程编译报错问题解决办法
  • qt c++11 thread 执行错误
  • c++使用thread类时编译出错,对‘pthread_create’未定义的引用
  • g++使用std::thread编译错误问题
  • 其他相关

问题关键所在


  • 用的 MinGW 版本太低,导致不支持 std::thread,亦即在 g++ -v 命令下没有提示 –enable-thread=posix

Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)

  • 编译选项没有加 “-std=c++11” 或者是 "-std=c++14"
  • 编译选项没有加 “-pthread”(注:不是 -lpthread,不懂的请自行百度 thread、pthread、lpthread、gthread 的区别与联系)

正确做法


1. 安装高版本的 MinGW

  • 通过以下任何一种方式下载 MinGW 安装器
    • 官网:MinGW
    • 官网直达链接:MinGW-w64 - for 32 and 64 bit Windows
    • 百度云直达:mingw-w64-install.exe
    • Github直达:Github
  • 安装至某一路径,我这里安装到 D:\MinGW
    • 选择尽可能高的版本,我安装的是 8.1.0
    • 路径尽量不要带有中文、空格(这是一个良好的习惯)

Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)

Sublime Text3 下 C++11 无法使用 std::thread 的解决方法 (基于 MinGW 编译器)

2. 配置正确的编译选项

这里有不懂的请参考我的另一篇博客:SublimeText3 搭建 C++ & Python,重点查看 ‘配置 C++ 编译环境’ 部分

"cmd": ["g++", "-std=c++14", "-pthread", "-Wl,--no-as-needed", "${file}", "-o", "${file_path}/${file_base_name}"],

完整的编译选项的配置:

{
    "path": "D:\\MinGW\\mingw64\\bin", //修改为自己的路径"cmd": ["g++", "-std=c++14", "-pthread", "-Wl,--no-as-needed", "${file}", "-o", "${file_path}/${file_base_name}"],  // 逐一比对自己的编译选项,尤其是拼写以及命令的前后位置"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:?(.*)$","working_dir": "${file_path}","encoding": "gbk","selector": "source.c++,source.c,source.cc,source.cpp,source.h","variants":[{
     // 这里的编译选项也要修改"name": "Run","cmd": ["cmd", "/c", "g++", "-std=c++14", "-pthread", "-Wl,--no-as-needed", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "${file_path}/${file_base_name} & pause"]},{
     // 这里的编译选项也要修改"name": "RunInCommand","cmd": ["cmd", "/c", "g++", "-std=c++14", "-pthread", "-Wl,--no-as-needed", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "${file_path}/${file_base_name} & pause"]}]
}

其他


有关 Sublimetext3 的使用细节请参考我的另一篇博客:SublimeText3 搭建 C++ & Python

  相关解决方案