首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ 11线程,错误纯虚拟函数调用

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

Stack Overflow用户
提问于 2014-05-10 16:08:20
回答 2查看 3.8K关注 0票数 8

下面是我正在尝试编译的一个非常小的C++11线程API代码

代码语言:javascript
复制
#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++线程1.cpp -pthread -std=c++11

我得到以下错误

纯虚拟方法

终止调用而没有活动异常

已中止

怎么了,有人能帮忙吗?

请注意,我正在用ARM A8处理器在Beaglebone Black上编译这个

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-11 20:14:42

这是libstdc++或Clang中的一个bug,这取决于您问谁。如果您使用的是2013年10月之后发布的Clang版本,它应该可以工作。当您运行g++ --version时,您看到了什么

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

代码语言:javascript
复制
g++ -pthread -std=c++11 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4} thread1.cpp

以下是bug报告:

bug.cgi?id=12730

这是对Clang司机的官方修正:

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

我不知道这之前是否也是GCC司机的一个错误,和/或它是否已经修复。

票数 6
EN

Stack Overflow用户

发布于 2016-06-19 09:58:39

在Raspberry Pi 2型号B上遇到了同样的问题,它的臂皮质为A7.使用g++-4.7编译,最终发现罪魁祸首是一个编译器标志:

代码语言:javascript
复制
-march=armv7-a
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23583317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档