C++ Boost Asio tcp::接受者访问冲突异常
我试图同时创建一个C++ Boost Asio tcp::接受者访问冲突异常,c++,boost,boost-asio,libtorrent-rasterbar,C++,Boost,Boost Asio,Libtorrent Rasterbar,我试图同时创建一个tcp::acceptor和一个libtorrent::session,但在等待来自std::cin的输入时,我收到了一个访问冲突异常。访问冲突发生在Boost IOCP实现中,如堆栈跟踪所示 Windows 8.1 MSVC 12.0(Visual Studio 2013) boost v1.57.0 libtorrent rasterbar v1.0.3 一个简单的例子,让我重现这个问题 #include <boost/asio.hpp> #include
tcp::acceptor
和一个libtorrent::session
,但在等待来自std::cin
的输入时,我收到了一个访问冲突异常。访问冲突发生在Boost IOCP实现中,如堆栈跟踪所示
- Windows 8.1
- MSVC 12.0(Visual Studio 2013)
- boost v1.57.0
- libtorrent rasterbar v1.0.3
#include <boost/asio.hpp>
#include <libtorrent/session.hpp>
int main(int argc, char *argv[])
{
boost::asio::io_service io_service;
boost::asio::ip::tcp::acceptor acceptor(io_service);
libtorrent::session s;
std::string line;
std::getline(std::cin, line); // <----- trigger
return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
boost::asio::io_服务io_服务;
boost::asio::ip::tcp::acceptor acceptor(io_服务);
libtorrent::会话s;
std::字符串行;
std::getline(std::cin,line);//我遇到了同样的问题。我通过在预处理器定义中添加BOOST\u ASIO\u ENABLE\u CANCELIO
得到了帮助。您可以找到更多信息。我遇到了同样的问题,我的代码中没有任何错误,事实上使用了另一个acceptor worker的构造函数fine,这让我崩溃了:
this->acceptor = boost::make_shared<boost::asio::ip::tcp::acceptor>(io_service_, endpoint);
this->acceptor=boost::使_共享(io_服务,端点);
而这不是
this->acceptor = boost::make_shared<boost::asio::ip::tcp::acceptor>(io_service_, endpoint.protocol());
this->acceptor=boost::使_共享(io_服务,endpoint.protocol());
注意protocol()调用,我使用的是另一个构造函数,令人惊讶的是,它起作用了…libtorrent会影响事情吗?因为如果会,那就是线索。看看会话
构造函数的作用
this->acceptor = boost::make_shared<boost::asio::ip::tcp::acceptor>(io_service_, endpoint.protocol());