You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下MinGW编译C++多线程代码报'thread'未声明错误

解决MinGW编译C++多线程代码的报错问题

问题根源

你碰到的'thread' was not declared in this scope类错误,核心是两个问题:

  1. GCC默认以C++98标准编译代码,而std::thread是C++11才引入的特性,编译器自然识别不了该类型。
  2. MinGW环境下使用C标准库的线程功能,必须显式链接线程库,否则即便启用了C11+标准,后续也会出现链接错误。

解决方法

1. 命令行编译的正确指令

在终端执行编译时,需同时指定C++版本并链接线程库,使用如下命令:

g++ -std=c++14 cppTest.cpp -o cppTest.exe -lpthread
  • -std=c++14:指定编译标准为C++14(你的GCC6.3完全支持,也可替换为-std=c++11)
  • -lpthread:链接MinGW的pthread线程库,确保std::thread相关功能正常工作

2. Sublime Text编译配置修改

如果你用Sublime Text编译代码,需要调整编译系统配置:

  1. 依次点击工具→编译系统→新建编译系统
  2. 将默认内容替换为以下配置:
{
    "cmd": ["g++", "-std=c++14", "${file}", "-o", "${file_base_name}.exe", "-lpthread"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",
    "shell": true,
    "encoding": "utf-8"
}
  1. 保存为C++14 Thread.sublime-build,之后选择该编译系统编译代码即可。

额外说明

编译通过后,你会发现程序输出的number值大概率小于2000000——这是因为代码未对共享资源加同步(比如std::mutex),存在竞态条件,属于多线程编程的正常现象,和本次编译报错无关。

内容的提问来源于stack exchange,提问作者hvbuddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:53:16