首页 > 解决方案 > boost 1.72 为 icmp::resolver 获取 icmp::socket io_service

问题描述

我将我的项目从 boost 1.67 更新为 boost 1.72。现在我无法编译它,因为以下原因:我有代码:

boost::asio::ip::icmp::resolver resolver(m_socket.get_io_service());

m_socket的对象在哪里boost::asio::ip::icmp::socket。这种情况下的编译错误如下所示:

错误 C2039 'get_io_service': 不是 'boost::asio::basic_raw_socket' 的成员

这里讨论了类似的错误,建议的解决方案是调用get_executor()方法,然后获取执行者的上下文。所以我改变了我的代码。现在看起来像:

boost::asio::ip::icmp::resolver resolver(m_socket.get_executor().context());

但仍然得到编译错误:

错误 C2039 'get_executor': is not a member of 'boost::asio::execution_context' (编译源文件 PathMTUDiscovery.cpp) SocketsLib C:\Work\BuildFiles\boost\1.72.0\include\boost\asio\detail\ io_object_impl.hpp 87

我试图在Networking TS compatible中找到一些东西,但在这里没有找到解决方案。任何人都知道如何正确解决错误?

标签: c++boostboost-asio

解决方案


推荐阅读