Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost Asio tcp::接受者访问冲突异常_C++_Boost_Boost Asio_Libtorrent Rasterbar - Fatal编程技术网

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());