当前文章: 首页 >> 编程开发 >> Qt >> QT使用C++的thread出错terminate called after throwing an instance of 'std::system_error' what(): Enable
«   2019年8月   »
1234
567891011
12131415161718
19202122232425
262728293031
网站分类
控制面板
您好,欢迎到访网站!
  查看权限
标签列表
最近发表

QT使用C++的thread出错terminate called after throwing an instance of 'std::system_error' what(): Enable

今天想回顾下C++的线程功能,使用QT编译以下代码,没有问题。

#include <iostream>
#include <thread>

using namespace std;

void work()
{
    cout<<"pid="<<this_thread::get_id()<<endl;
}

int main(int argc, char *argv[])
{
    thread t1(work);
    //
    t1.join();
    return 0;
}


运行时竟然出错了

terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted


原来是与pthread库有关系,解决方法,在.pro一程配置文件中加入以下内容

# 一般加上pthread就可以
LIBS += -pthread

# 如果你的QT工程CONFIG中没有配置c++11,最好把下面两行也一并加上吧
QMAKE_CXXFLAGS += -pthread
QMAKE_CXXFLAGS += -std=c++11


然后运行就正常了。

声明:本站原创文章,转载、复制、使用等请注明出处。
标题QT使用C++的thread出错terminate called after throwing an instance of 'std::system_error' what(): Enable
作者jues
地址: http://blog.jues.org.cn/post/qt-shi-yong-c-de-thread-chu-cuo-terminate-called-after-throwing-an-instance-of-stdsystemerror-what-enable.html
1楼
  • jues 2018-11-03 13:33:35  回复
  • 今天测试发现,使用QT,在linux下可以,windows下不行,不知道是否与版本有关,Windows下的QT版本较老了,

发表评论:

Powered By Z-BlogPHP 1.5.2 Zero Powered By Z-BlogPHP © 2018 jues博客 Copyright Your WebSite.Some Rights Reserved.联系站长 Themes by jues