2017-09-25 165 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