C++ 11 线程,错误调用纯虚函数

标签 c++ multithreading c++11 pthreads beagleboneblack

这是我正在尝试编译的非常简单的 C++11 线程 API 代码

#include<iostream>
#include<thread>

using namespace std;

void threadFunction(void)
{
    cout<<"hello from thread:";//<<this_thread::get_id()<<endl;
}

int main()
{
    std::thread t(threadFunction);
    t.join();

    return 0;
}



关于将其编译为
g++ thread1.cpp -pthread -std=c++11
我收到以下错误
纯虚方法调用
在没有事件异常的情况下终止调用
中止


有什么问题吗,求大神帮忙
请注意,我是在配备 ARM A8 处理器的 Beaglebone Black 上编译的

最佳答案

这是 libstdc++ 或 Clang 中的错误,具体取决于您询问的对象。如果您使用的是 2013 年 10 月之后发布的 Clang 版本,它应该可以工作。运行 g++ --version 时您会看到什么?

作为解决方法,您可以尝试改用此命令行。我不保证它会起作用;请对您的结果发表评论。

g++ -pthread -std=c++11 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4} thread1.cpp

这是错误报告:

http://llvm.org/bugs/show_bug.cgi?id=12730

这是对 Clang 驱动程序的官方修复:

https://llvm.org/viewvc/llvm-project?view=revision&revision=191707

我不知道这以前是否也是 GCC 驱动程序中的错误,和/或是否已修复。

关于C++ 11 线程,错误调用纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583317/

相关文章:

C++:OpenMP 并行循环内存泄漏

java - 建议将 Handler 与 EventBus/Otto 一起使用?

c++ - 为什么从不可 move 类派生的类本身是可 move 构造的?

c++ - 基于用户表达式在编译时参数化函数

c++ - 在 Visual Studio 2010 中, Debug模式下没有堆栈展开

c++ - 安装了 Cygwin64 并且在 Eclipse 中无法在 <iostream> 中找到 Unresolved inclusion

c++ - 是否可以定义指向引用的指针?

Java链锁有点不同

c# - Stopwatch.ElapsedTicks 是线程安全的吗?

c++ - MACRO 取决于其文件夹位置