【发布时间】:2016-01-12 19:43:37
【问题描述】:
所以我正在尝试编译我当前的代码:
#include <boost/network/protocol/http/client.hpp>
int main()
{
boost::network::http::client client;
boost::network::http::client::request request("http://www.example.com");
request << boost::network::header("Connection", "close");
boost::network::http::client::response response = client.get(request);
std::cout << body(response);
return 0;
}
从 [this post] (How can I fetch data from a website inside a C++ program) 收集的所有代码。因此,我尝试使用提供的一些不同脚本自行运行这个东西,但都没有奏效。以下是我尝试过的一些脚本:
g++ -I. -I$BOOST_ROOT -L$BOOST_ROOT/stage/lib -lboost_system
g++ -I. -I/usr/local/include/boost -lboost_thread -lboost_system
-lcppnetlib -client -connections -lcppnetlib -server -parsers
-lcppnetlib -uri -pthread main.cpp
./a.out
我也试过了:
g++ -I. -I$BOOST_ROOT -L$BOOST_ROOT/stage/lib -lboost_system -pthread main.cpp
也试过了:
g++ -I. -I/usr/local/Cellar/boost/1.59.0/include/boost -L/usr/local/Cellar/boost/1.59.0/lib -lboost_system pthread main.cpp
但我在阅读更多帖子后注意到 -I 用于表示其根目录中的 boost 头文件,而 -L 用于查找 boost 根目录的库。所以我不确定我到底下载了什么,因为我现在有 2 个副本,我不确定它们中的任何一个是否有效,我尝试了各种组合以试图让这个东西运行。显然,我到处都是 boost 的几个副本。 所以 /usr/local/Cellar 目录保存了两个最新的..
/usr/local/Cellar/boost/1.59.0/include/boost
/usr/local/Cellar/boost/1.59.0/include/lib
另外,/usr/local/ 目录同时包含这两者..
/usr/local/include/boost/
/usr/local/lib
再说一遍,
/usr/local/opt/boost/include
/usr/local/opt/boost/include/lib
拥有多个副本会破坏流程吗?我很困惑。
所以我已经尝试过解决这个问题,但我只是被难住了..我不擅长编写脚本(最近才从这个问题中学到了大部分内容),而且我根本不知道如何编译这个东西..任何帮助是任何方式、形状或形式都无法理解。提前感谢任何提供帮助的人。
【问题讨论】:
-
无论您使用什么库,它肯定不是 Boost 的一部分...
-
如此伟大的洞察力。我的问题是'那么应该包含哪个库应该与 boost 一起正常工作?'
-
如果您正在寻找提议但随后被拒绝的 Boost.Http 库,可以找到 here。唯一处理网络的官方 Boost 库是 Boost.Asio。请注意,Boost.Http 作为官方 Boost 库被拒绝,但仍在积极开发中。您显示的代码似乎适用于 cpp-netlib,可以在 here 找到,并且再次不是官方的 Boost 库。
-
你会推荐使用 boost.asio 而不是 cpp-netlib 吗?
-
cpp-netlib 是建立在 Boost.Asio 之上的高级抽象;即它们服务于不同的目的,而 Asio 是两者中的较低级别。使用最适合您需要的。
标签: c++ macos boost network-programming cpp-netlib