gpt4 book ai didi

c++ - 为什么我会收到此错误 : 'thread' is not a member of 'std' ?

转载 作者:行者123 更新时间:2023-11-30 04:09:08 32 4
gpt4 key购买 nike

我正在使用 Code::Blocks 13.12 和 TDM-GCC(4.7.1 版,32 位)。当我尝试使用线程类时,出现以下错误: 'thread' is not a member of 'std'

我确定#include <thread> .我启用了编译器标志 -std=c++11告诉编译器符合 C++11 标准。

我想也许我的GCC版本不够新,所以我安装了TDM-GCC 4.8.1;当我使用它的编译器时,我没有这个问题。然而,然后我读到 GCC 版本低至 4.4 支持 C++11 线程类,这意味着我拥有的 GCC 原始版本 (4.7.1) 已经足够最新了。出了什么问题?

最佳答案

MinGW(包含在 TDM-GCC 中)带有两个线程 API 之一:winpthreads(基于 POSIX 线程 API,pthreads)或 Win32 线程 API。如果你有一个带有 Win32 线程 API 的版本,std::thread 是 disabled . TDM-GCC 4.7.1 使用 Win32 线程 API,而 TDM-GCC 4.8.1 及更高版本带有 winpthreads。这就是编译器在一种情况下成功但在另一种情况下失败的原因。

对于 'thread' is not member of 'std' 问题,这导致了 2 种可能的解决方案:

  • 安装一个使用 winpthreads 的 TDM-GCC 版本(独立的或与 Code::Blocks 一起使用)。这意味着 4.8.1 或更高版本。
  • 使用MinGW installer ,它允许您选择要安装的线程 API。它还允许您选择要安装的 MinGW 版本(现在对应于包含的 GCC 版本),因此您甚至可以选择较旧的版本,例如 4.7.3,它比 4.8.1 更稳定。

关于c++ - 为什么我会收到此错误 : 'thread' is not a member of 'std' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460817/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com