【问题标题】:<thread>: no match for operator <<thread>: 运算符 < 不匹配
【发布时间】:2014-12-09 06:07:02
【问题描述】:

我正在尝试在 C++11 程序中实现多线程。

我将线程从我的主程序中分离出来,并尝试让最基本的示例正常工作:

#include <iostream>
#include <thread>

void first_procedure() {
    std::cout << "First procedure output." << std::endl;
}

void second_procedure() {
    std::cout << "Second procedure output." << std::endl;
}

int main() {
    std::thread first_thread(first_procedure);
    std::thread second_thread(second_procedure);
    first_thread.join();
    second_thread.join();
    return 0;
}

但是,即使使用此示例,我也会收到以下错误:

c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\thread 在函数'bool std::operator

88 30 c:\program files (x86)\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\thread [错误] no match for 'operator

我在 Windows 8 上使用带有 TDM-GCC 4.7.1 64 位的 Orwell Dev-C++ 5.7.1。调用链接器时,我添加了 -static-libgcc -std=c++11。

编辑 1:我加入了线程并收到相同的错误消息。

【问题讨论】:

  • 请注意,您的程序已损坏。您不能破坏可连接的线程。
  • 你需要加入这些话题。
  • 这是整个代码吗?如果是这样,你的编译器坏了——换一个新的。
  • 我编辑了我的帖子。即使我加入线程,我也会收到相同的错误消息。是的,这是我的全部代码。
  • TDM-GCC 4.7.1,但您包含的标头是 gcc\x86_64-w64-mingw32\ 4.8.1 \include ?我不知道你是怎么把那个工具链和口香糖和钢丝绳拼凑在一起的,但它搞砸了。

标签: c++ multithreading c++11


【解决方案1】:

首先在 cmets 中注意到了这一点:

来自您的错误消息和补充详细信息:

compiler: TDM-GCC 4.7.1
includes: gcc\x86_64-w64-mingw32\4.8.1\include

您的编译器正在尝试使用用于不同编译器的库。 使用4.7.1 4.8.1,而不是两者的混合。

好消息是您的代码看起来不错。整理工具链,应该可以正常编译了。

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多