作者:越野之族_205 | 来源:互联网 | 2024-10-21 11:38
问题描述最近需要在windows平台使用C++多线程编程,编译时提示错误threadisnotamemberofstd,oryoumaybeforget#include
问题描述
最近需要在 windows 平台使用 C++ 多线程编程,编译时提示错误 thread is not a member of std, or you maybe forget '#include '
下面是出现此问题的环境背景:
- 已经添加 thread 头文件
- 编译时已添加 -pthread 参数
- MinGW 版本为 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0,支持多线程
解决方法
导致这个问题的原因是 MinGW GCC 缺少 C++11 标准的线程类实现,需要从 github 下载相关的头文件,重新编译即可使用线程库。
下载地址:meganz/mingw-std-threads
将上述头文件下载完成后放入本地 MinGW 环境中,我的路径是:./mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/
使用方法
#include
#include
void read() {
std::cout <<"Success!" <}
int main(int argc, char* argv[]) {
std::thread th(read);
}
编译命令:g++ main.cpp -o main -pthread
执行:./main.exe