我正在尝试使用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:该类型不支持尝试的操作 引用的对象。
此应用程序已请求运行时将其终止 不寻常的方式请联系应用程序的支持团队获取更多信息 信息。
构建命令是:
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)
答案 0 :(得分:0)
最后,经过3天的痛苦,我想通了。 问题出在MinGW安装上,因为我在 Threads 部分选择了 win32 。 重新安装 posix 线程后,一切正常。
编辑:我再次遇到此问题,但我在另一个项目中使用了Asio线程。所以我开始删除所有内容,直到找到遗漏的内容。
#include <map>
没有它,它就不会工作。