为网络提升asio库(http客户端)

时间:2017-09-25 23:17:10

标签: c++ boost-asio

我尝试使用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,文件系统,日志设置等...)。 另一方面,需要这个lib的项目正在寻找一个名为boost_1_59_0.lib的库,所以我的问题是如何知道哪些生成的库是用于网络的正确库(我不明白任何与asio或网络相关的名称......)。 我将不胜感激任何指导。

由于 格斯

2 个答案:

答案 0 :(得分: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库。

但是,提升Asio确实依赖于Boost.System,Boost.Thread(非nesseary)等其他boost组件来支持更好的异步操作和一些错误代码(boost :: system :: error_code和boost :: system: :SYSTEM_ERROR)

有关详细信息,请参阅herehere

答案 1 :(得分:0)

boost asio 是仅限标头的库,asio网络依赖于boost system的错误消息,不是 仅限标题库。 简而言之,您的代码需要链接到boost-system,而boost-chrono计时器可能还需要asio

注意:boost支持autolinking中的Visual Studio;所以你只需要将boost库目录的路径添加到Library Directories配置属性,例如:

$BOOST_ROOT\stage\lib

$BOOST_ROOT是您安装boost的目录。

您无需将boost-systemboost-chrono添加到Linker->Input->Additional Dependencies。但是,您可能需要添加Windows网络库,例如:wsock32ws2_32