0

我知道 boost asio 可以与第三方库以反应器样式集成。是我找到的示例。它是用一个插座演示的,它工作得很好。但是当我使用 boost::windows::stream_handle 而不是 socket 来处理文件描述符时,它不会编译。这是示例代码:

void Func(boost::system::error_code ec, std::size_t bytes)
{

}
int main()
{
    boost::asio::io_service io_service;
    TCP::socket sock(io_service);
    sock.async_read_some(boost::asio::null_buffers(), Func); //1

    HANDLE h;
    char buf[20];
    boost::asio::windows::stream_handle Handle(io_service, h);
    Handle.async_read_some(boost::asio::buffer(buf, 20), Func);  //2
    //Handle.async_read_some(boost::asio::null_buffers(), Func); //3
    return 0;
}

第 1 行和第 2 行可以编译,但如果我取消第 3 行的注释,我会得到一大堆错误。以下是部分错误:

F:\Lib\boost\include\boost-1_54/boost/asio/detail/win_iocp_handle_service.hpp:265:8: 错误:'void boost::asio::detail::win_iocp_handle_service::async_read_some(boost::asio: :detail::win_iocp_handle_service::implementation_type&, const boost::asio::null_buffers&, Handler&) [with Handler = void (*)(boost::system::error_code, unsigned int)]' 是私有的

似乎该函数已用private声明。有谁知道为什么?这里有解决方法吗?

4

0 回答 0