C++ 无法将boost::asio::netdb::errors转换为std::error\u代码
我正在尝试编译此代码(取自文档):C++ 无法将boost::asio::netdb::errors转换为std::error\u代码,c++,boost,boost-asio,cpp-netlib,C++,Boost,Boost Asio,Cpp Netlib,我正在尝试编译此代码(取自文档): 我使用的是VS2015、cpp netlib 0.12.0(最终版)和Boost 1.55.0,我不知道是什么导致了这种情况。有办法解决吗?几天来,我一直在绞尽脑汁试图让这个库正常工作,但不幸的是,似乎总是会出现一个新错误。在boost::asio中,任何时候你想在回调/调用中使用错误代码,而不是std::error\u code时,你都应该使用boost::system::error\u code 我不知道netlib在后台做了什么,但这可能是参考代码中存在
我使用的是VS2015、cpp netlib 0.12.0(最终版)和Boost 1.55.0,我不知道是什么导致了这种情况。有办法解决吗?几天来,我一直在绞尽脑汁试图让这个库正常工作,但不幸的是,似乎总是会出现一个新错误。在boost::asio中,任何时候你想在回调/调用中使用错误代码,而不是
std::error\u code
时,你都应该使用boost::system::error\u code
我不知道netlib在后台做了什么,但这可能是参考代码中存在错误的证据,或者仅仅是代码的旧版本使用了错误的符号。在boost::asio中,当您打算在回调/调用中使用错误代码时,您需要使用
boost::system::error\u code
,非std::错误\u代码
我不知道netlib在后台做了什么,但这可能是参考代码中存在错误的证据,也可能只是代码的旧版本使用了错误的符号。我在OS X 10.11.4上使用了clang 7.3.0、cppnetlib 0.12.0、asio 1.10.6和boost 10.60.0,它可以工作
我使用clang++-lcppnetlib uri-lcppnetlib client connections-lssl-lcrypto-I/opt/local/include-L/opt/local/lib-std=c++11 test.cpp-o test编译了您提供的示例
如果您想启用HTTPS支持,请确保在包含BOOST/NETWORK/protocol/http/client.hpp
之前添加\define BOOST\u NETWORK\u ENABLE\u HTTPS
。我在OS X 10.11.4上使用的是clang 7.3.0、cppnetlib 0.12.0、asio 1.10.6和BOOST 10.60.0,它可以正常工作
我使用clang++-lcppnetlib uri-lcppnetlib client connections-lssl-lcrypto-I/opt/local/include-L/opt/local/lib-std=c++11 test.cpp-o test编译了您提供的示例
如果要启用HTTPS支持,请确保在包含BOOST/NETWORK/protocol/http/client.hpp
之前添加\define BOOST\u NETWORK\u ENABLE\u HTTPS
。通常对于BOOST asio
,您必须链接BOOST\u系统
以处理错误。然而,我已经快速浏览了boost/asio/error.hpp
和boost/system/error\u code.hpp
,我不认为boost::asio::error::netdb\u errors
是asio
错误,我认为这是cpp netlib
错误。。。希望他们使用了相同的机制。通常对于boost asio
,您必须链接boost\u系统来处理错误。然而,我已经快速浏览了boost/asio/error.hpp
和boost/system/error\u code.hpp
,我不认为boost::asio::error::netdb\u errors
是asio
错误,我认为这是cpp netlib
错误。。。希望他们使用了相同的机制。
#include <boost/network/protocol/http/client.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
using namespace boost::network;
if (argc != 2) {
std::cout << "Usage: " << argv[0] << " [url]" << std::endl;
return 1;
}
http::client client;
http::client::request request(argv[1]);
request << header("Connection", "close");
http::client::response response = client.get(request);
std::cout << body(response) << std::endl;
return 0;
}
Error C2446 ':': no conversion from 'boost::asio::error::netdb_errors' to 'const std::error_code'