我正在尝试编译此代码(取自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'
我使用的是VS2015,cpp-netlib 0.12.0(最终版)和Boost 1.55.0,我不知道是什么原因引起的。有办法解决吗?我一直在试图让这个图书馆工作几天,但不幸的是,似乎总会出现一个新的错误。
答案 0 :(得分:0)
在boost :: asio中,只要您打算在回调/调用中使用错误代码,就应该使用boost::system::error_code
,而不是std::error_code
。
我不知道netlib在后台做了什么,但这可能是参考代码中的错误,或者只是使用错误符号的旧版本代码的证据。
答案 1 :(得分:0)
我正在使用clang 7.3.0,cppnetlib 0.12.0,asio 1.10.6并在OS X 10.11.4上提升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支持,请务必在添加#define BOOST_NETWORK_ENABLE_HTTPS
之前添加boost/network/protocol/http/client.hpp
。