首页 文章

Asio C 11线程异常:引用的对象类型不支持尝试的操作

提问于
浏览
1

我正在尝试使用C 11 Asio的头文件库(没有增强版)编写与iOS和Android的HTTPS客户端连接,我正在Windows 10上测试c代码 . (我在Windows 8上测试过,但问题是相同)

我有一个例外,所以我自己写了一个简单的例子来找出发生了什么 . 这是代码:

#include <iostream>
#include "asio.hpp"

void hello_world_thread() {
    std::cout << "Hello world!" << std::endl;
}

int main()
{
    asio::thread t(
        std::bind(
            &hello_world_thread
        )
    );

    t.join();

    return 0;
}

如果我在Code :: Blocks内部/外部运行它,我得到以下异常:

抛出'std :: system_error'的实例后调用what():thread:引用的对象类型不支持尝试的操作 . 此应用程序已请求Runtime以不寻常的方式终止它 . 有关更多信息,请联系应用程序的支持团队 .

构建命令是:

x86_64-w64-mingw32-g .exe -std = c 11 -Wall -DASIO_STANDALONE -g -Iasio -c D:\ Projektek \ C \ AsioTeszt \ main.cpp -o obj \ Debug \ main.o x86_64-w64- mingw32-g .exe -o bin \ Debug \ AsioTeszt.exe obj \ Debug \ main.o -lws2_32 -static -static-libgcc -static-libstdc -m64

我已经尝试过-pthread标志,但错误是一样的 .

MinGW版本:gcc版本5.1.0(x86_64-win32-seh-rev0,由MinGW-W64项目构建)Asio版本:1.10.6(并试用了Dev发行版1.11.0)

1 回答

  • 0

    最后,经过3天的痛苦,我想通了 . 问题出在MinGW安装上,因为我在Threads部分选择了win32 . 使用posix线程重新安装后,一切正常 .

    Edit :我再次遇到这个问题,但我在另一个项目中使用了Asio线程 . 所以我开始删除所有内容,直到找到遗漏的内容 .

    #include <map>
    

    没有它,它将无法工作 .

相关问题