2015-04-15 46 views
0

我在编译http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/ssl/client.cpp的boost示例。出于某种原因,我得到了下面的错误,我不知道如何解决这些问题:错误编译ssl客户端的boost示例

ssl_client.cpp:37:25: error: ‘boost::asio::ssl::verify_context’ has not been declared 
ssl_client.cpp: In constructor ‘client::client(boost::asio::io_service&, boost::asio::ssl::context&, boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::iterator)’: 
ssl_client.cpp:27:13: error: ‘class boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >’ has no member named ‘set_verify_mode’ 
ssl_client.cpp:27:29: error: ‘verify_peer’ is not a member of ‘boost::asio::ssl’ 
ssl_client.cpp:28:13: error: ‘class boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >’ has no member named ‘set_verify_callback’ 
ssl_client.cpp:31:5: error: ‘async_connect’ is not a member of ‘boost::asio’ 
ssl_client.cpp: In member function ‘bool client::verify_certificate(bool, int&)’: 
ssl_client.cpp:48:54: error: request for member ‘native_handle’ in ‘ctx’, which is of non-class type ‘int’ 
ssl_client.cpp: In function ‘int main(int, char**)’: 
ssl_client.cpp:143:68: error: no matching function for call to ‘boost::asio::ssl::basic_context<boost::asio::ssl::context_service>::basic_context(boost::asio::ssl::context_base::method)’ 
ssl_client.cpp:143:68: note: candidates are: 
/usr/include/boost/asio/ssl/basic_context.hpp:47:3: note: boost::asio::ssl::basic_context<Service>::basic_context(boost::asio::io_service&, boost::asio::ssl::context_base::method) [with Service = boost::asio::ssl::context_service] 
/usr/include/boost/asio/ssl/basic_context.hpp:47:3: note: candidate expects 2 arguments, 1 provided 
/usr/include/boost/asio/ssl/basic_context.hpp:35:7: note: boost::asio::ssl::basic_context<boost::asio::ssl::context_service>::basic_context(const boost::asio::ssl::basic_context<boost::asio::ssl::context_service>&) 
/usr/include/boost/asio/ssl/basic_context.hpp:35:7: note: no known conversion for argument 1 from ‘boost::asio::ssl::context_base::method’ to ‘const boost::asio::ssl::basic_context<boost::asio::ssl::context_service>&’ 

我目前使用以下行编译:

g++ -I /usr/include/boost -Wall -o main ssl_client.cpp -lboost_system 

而且我最近安装升压通过:

sudo apt-get install libboost-all-dev 

我敢肯定有一个简单的修复,有没有人知道我做错了什么?

============================================== ========================== 更新:

现在我已经试过编译:

g++ -I /usr/include/boost -Wall -o main ssl_client.cpp -lboost_system -lcrypto -lssl -lpthread 

,但我仍然收到以下错误:

ssl_client.cpp:37:25: error: ‘boost::asio::ssl::verify_context’ has not been declared 
ssl_client.cpp: In constructor ‘client::client(boost::asio::io_service&, boost::asio::ssl::context&, boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::iterator)’: 
ssl_client.cpp:27:13: error: ‘class boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >’ has no member named ‘set_verify_mode’ 
ssl_client.cpp:27:29: error: ‘verify_peer’ is not a member of ‘boost::asio::ssl’ 
ssl_client.cpp:28:13: error: ‘class boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp> >’ has no member named ‘set_verify_callback’ 
ssl_client.cpp:31:5: error: ‘async_connect’ is not a member of ‘boost::asio’ 
ssl_client.cpp: In member function ‘bool client::verify_certificate(bool, int&)’: 
ssl_client.cpp:48:54: error: request for member ‘native_handle’ in ‘ctx’, which is of non-class type ‘int’ 
ssl_client.cpp: In function ‘int main(int, char**)’: 
ssl_client.cpp:143:68: error: no matching function for call to ‘boost::asio::ssl::basic_context<boost::asio::ssl::context_service>::basic_context(boost::asio::ssl::context_base::method)’ 
ssl_client.cpp:143:68: note: candidates are: 
/usr/include/boost/asio/ssl/basic_context.hpp:47:3: note: boost::asio::ssl::basic_context<Service>::basic_context(boost::asio::io_service&, boost::asio::ssl::context_base::method) [with Service = boost::asio::ssl::context_service] 
/usr/include/boost/asio/ssl/basic_context.hpp:47:3: note: candidate expects 2 arguments, 1 provided 
/usr/include/boost/asio/ssl/basic_context.hpp:35:7: note: boost::asio::ssl::basic_context<boost::asio::ssl::context_service>::basic_context(const boost::asio::ssl::basic_context<boost::asio::ssl::context_service>&) 
/usr/include/boost/asio/ssl/basic_context.hpp:35:7: note: no known conversion for argument 1 from ‘boost::asio::ssl::context_base::method’ to ‘const  boost::asio::ssl::basic_context<boost::asio::ssl::context_service>&’ 
+1

看到了这一点? http://stackoverflow.com/a/29118744/85371 – sehe

+0

刚刚尝试过它,使用-lcrypto,-lssl和-lpthread,但由于某些原因我仍然收到大量错误。 –

回答

0

修好了!这是因为apt-get给了我升压版本1.46,我需要版本1.48。我做了以下解决它:

apt-get purge libboost-all-dev 

apt-get install libboost1.48-all-dev 

感谢:http://spencernusbaum.me/blog.php#106