我已经安装了boost和cpp-netlib并成功运行了所有测试。我可以使用以下选项从命令行编译以下示例:
clang++ -o test main.cpp \
-I/path.../cpp-netlib-0.11.1-final \
-I/path.../boost_1_57_0 \
-L/path.../boost_1_57_0/stage/lib \
-L/usr/local/lib \
-lboost_system \
-lboost_thread \
-lcppnetlib-uri \
-lcppnetlib-client-connections \
-lssl \
-lcrypto \
-pthread
来自cpp-netlib.org的示例:
#include <boost/network/protocol/http/client.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
using namespace boost::network;
if (argc != 2) {
std::cout << "Usage: " << argv[0] << " [url]" << std::endl;
return 1;
}
http::client client;
http::client::request request(argv[1]);
request << header("Connection", "close");
http::client::response response = client.get(request);
std::cout << body(response) << std::endl;
return 0;
}
运行此程序:
./test "url"
成功显示网站的html代码。
当我尝试将此示例导入Xcode时,我遇到了问题。我已经为头文件和二进制文件包含了正确的搜索路径。代码将编译,但Xcode每次到达此行时都会崩溃。
http::client::request request(argv[1]);
我可以注释掉这一行以及它之后的所有内容以及程序编译和运行。否则它会崩溃,即使在尝试使用断点时也是如此。任何建议,将不胜感激。
答案 0 :(得分:1)
这是因为URI解析器在调试版本中生成了非常大的符号。在URI解析中使用Boost.Spirit使用非常繁重的模板元编程,并且显示为非常长的符号,系统可能无法正确处理这些符号。我不确定是否有解决方法,因为我没有使用Xcode IDE来定期开发cpp-netlib。