2017-09-25 213 views
1

我想用Visual Studio 2015編譯一個C++實用工具,它需要Boost asio庫用於聯網(http請求)。 相同的解決方案包括一個項目來構建這個Boost asio庫,但我不得不下載boost_1_59_0.7z文件。到目前爲止,我能夠下載它並且構建得很好,但是我發現生成的結構像11個不同名稱的庫(libboost_ chrono -vc140-mt-sgd-1_59.lib,以及另外10個,但是具有date_time,文件系統,日誌設置等)。另一方面,需要這個庫的項目正在尋找一個名爲boost_1_59_0.lib的庫,所以我的問題是如何知道哪個生成的庫是適合網絡使用的庫(我沒有看到與asio或網絡相關的名稱...)。 我會很感激這方面的任何指導。網絡(http客戶端)的boost asio庫

感謝 格斯

回答

1

的Boost.Asio的doc

默認情況下,Boost.Asio的是一個只有標題庫。但是,有些開發人員可能更喜歡使用單獨編譯的源代碼構建Boost.Asio。爲此,請將#include <boost/asio/impl/src.hpp>添加到程序中的一個(且僅有一個)源文件中,然後使用在項目/編譯器設置中定義的BOOST_ASIO_SEPARATE_COMPILATION構建程序。或者,BOOST_ASIO_DYN_LINK可能被定義爲構建一個單獨編譯的Boost.Asio作爲共享庫的一部分。

因此,默認情況下,Asio只是頭文件,並且對於大多數用途不需要鏈接任何Boost庫。但是,boost Asio依賴於其他boost組件like boost.System,Boost.Thread(而不是nessesary)等支持更好的異步操作和一些錯誤代碼(boost :: system :: error_code和boost :: system) ::系統錯誤)。

有關更多信息,請參閱herehere

0
boost asio

一個僅標頭庫但asio聯網取決於boost system的錯誤消息,這不是的報頭只庫。 簡而言之,您的代碼需要鏈接到boost-system,並且它也可能需要boost-chrono代替asio定時器。

注意:boost支持autolinkingVisual Studio;所以你只需要在路徑添加到boost庫目錄到Library Directories配置屬性,例如:

$BOOST_ROOT\stage\lib 

哪裏$BOOST_ROOT是安裝boost的目錄。

您不需要將boost-systemboost-chrono添加到Linker->Input->Additional Dependencies。但是,您可能需要添加Windows網絡庫,例如:wsock32ws2_32