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

本文解决C++11中std::thread编译错误,需升级MinGW版本并配置-g++-std=c++14和-pthread选项。详细步骤包括下载高版本MinGW,正确设置编译参数,确保支持多线程功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明


主要参考链接:

在这里插入图片描述

问题关键所在


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

在这里插入图片描述

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

正确做法


1. 安装高版本的 MinGW

  • 通过以下任何一种方式下载 MinGW 安装器
  • 安装至某一路径,我这里安装到 D:\MinGW
    • 选择尽可能高的版本,我安装的是 8.1.0
    • 路径尽量不要带有中文、空格(这是一个良好的习惯)

在这里插入图片描述

在这里插入图片描述

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值