我尝试使用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或网络相关的名称......)。 我将不胜感激任何指导。
由于 格斯
答案 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)
答案 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-system
或boost-chrono
添加到Linker->Input->Additional Dependencies
。但是,您可能需要添加Windows
网络库,例如:wsock32
和ws2_32
。