2017-06-17 110 views
0

不会编译我试图用CPP-NETLIB-0.12.0上cpp-netlib.org运行Hello World例子并提高-1.64.0在Ubuntu 16.04。一块的代码是(从第1行):CPP-NETLIB Hello World示例在Linux上

#include <boost/network/protocol/http/server.hpp> 
#include <iostream> 

namespace http = boost::network::http; 

struct hello_world; 
typedef http::server<hello_world> server; 

struct hello_world 
{ 
    void operator()(server::request const &request, server::response &response) 
    { 
     server::string_type ip = source(request); 
     unsigned int port = request.source_port; 
     std::ostringstream data; 
     data << "Hello, " << ip << ':' << port << '!'; 
     response = server::response::stock_reply(server::response::ok, data.str()); 
    } 
    void log(const server::string_type& message) 
    { 
     std::cerr << "ERROR: " << message << std::endl; 
    } 
}; 

,当我使用下面的行来编译:

g++ test1.cpp -o test1 -std=c++11 -lcppnetlib-uri -lcppnetlib-server-parsers -lcppnetlib-client-connections -lboost_system -lboost_thread -lpthread 

我得到以下错误:

test1.cpp:11:61: error: ‘boost::network::http::server<hello_world>::response’ has not been declared 
    void operator()(server::request const &request, server::response &response) 
                  ^
test1.cpp: In member function ‘void hello_world::operator()(const request&, int&)’: 
test1.cpp:17:28: error: ‘boost::network::http::server<hello_world>::response’ has not been declared 
     response = server::response::stock_reply(server::response::ok, data.str()); 
          ^
test1.cpp:17:58: error: ‘boost::network::http::server<hello_world>::response’ has not been declared 
     response = server::response::stock_reply(server::response::ok, data.str()); 
                 ^

我从网站的例子中拿出代码。我检查了包含路径和所有必要的库似乎在那里。我似乎无法弄清楚问题所在。

回答

0

它看起来像CPP-NETLIB文档全乱了(就像一般整个项目)。 HTTP server API page坚持Handlerhttp::server模板参数应该有成员operator()connection_ptr作为第二个参数(尽管它表明错误包括):

#include <boost/network/protocol/http/server.hpp> 
#include <boost/network/utils/thread_pool.hpp> 

struct handler_type; 
typedef boost::network::http::server<handler_type> http_server; 

struct handler_type 
{ 
    void 
    operator() 
    (
     http_server::request const & request, 
     http_server::connection_ptr connection 
    ) 
    { 
     // do something here 
    } 
};