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

Asio C++11 Thread Exception: The attempted operation is not supported for the type of object referenced

我正在尝试使用 C++11 Asio 的 header 唯一库(没有提升)编写到 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 我得到以下异常:

terminate called after throwing an instance of 'std::system_error'
what(): thread: The attempted operation is not supported for the type of object referenced.

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

构建命令是:

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)

折腾了3天终于搞明白了。 问题出在 MinGW 安装上,因为我在 Threads 部分选择了 win32。 使用 posix 线程重新安装后,一切正常。

编辑: 我再次运行遇到这个问题,但我在另一个项目中使用了Asio线程。所以我开始删除所有东西,直到我发现缺少的东西。

#include <map>

没有这个就不行。