1

我正在尝试编译此代码(取自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,但我不知道是什么原因造成的。有没有办法解决它?几天来,我一直在挠头试图让这个库工作,但不幸的是,似乎总是要出现一个新错误。

4

2 回答 2

0

我在 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 支持,请确保#define BOOST_NETWORK_ENABLE_HTTPS在包含之前添加。boost/network/protocol/http/client.hpp

于 2016-05-09T20:11:26.807 回答
0

在 boost::asio 中,您应该在boost::system::error_code打算在回调/调用中使用错误代码的任何时候使用,而不是std::error_code.

我不知道 netlib 在后台做什么,但这可能是参考代码中存在错误的证据,或者只是旧版本的代码使用了错误的符号。

于 2016-05-09T18:22:59.757 回答