2016-05-02 4 views
0

私は(cpp-netlibドキュメントから引用)このコードをコンパイルしようとしている:はブースト:: ASIO :: netdbを変換できません::はstdするエラー:: ERROR_CODE

#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(最終)を使用し、1.55.0をブーストし、私はこれを引き起こす可能性がどのような見当がつかないよ。それを修正する方法はありますか?私はこのライブラリーを数日間働かせるために頭を悩ましてきましたが、残念ながら新しいエラーが必ず出てきているようです。

+0

通常、 'boost asio'には、エラーを処理するために' boost_system'とリンクする必要があります。しかし、私は 'boost/asio/error.hpp'と' boost/system/error_code.hpp'を通して簡単に見てきましたが、 'boost :: asio :: error :: netdb_errors'は'asio'エラーです、私は' cpp-netlib'エラーだと思います。うまくいけば、彼らは同じ仕組みを使いました。 – kenba

答えて

0

boost :: asioでは、std::error_codeではなく、コールバック/呼び出しでエラーコードを使用する場合は、いつでもboost::system::error_codeを使用することになります。

netlibがバックグラウンドで何をしているのか分かりませんが、これは参照コードの間違いか、間違った記号を使った古いバージョンのコードの証拠となります。

0

OS X 10.11.4でclang 7.3.0、cppnetlib 0.12.0、asio 1.10.6、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_NETWORK_ENABLE_HTTPSを必ず追加してください。

関連する問題