我试图使用Boost的cpp-netlib编写一个超级平凡的程序来解析示例c ++文件中的HTTP URL。
代码与以下内容一样简单:
#include <boost/network/uri>
#include <iostream>
using namespace boost::network;
int main() {
uri::uri instance("http://www.example.com");
std::cout << "scheme: " << instance.scheme() << std::endl
<< "host: " << instance.host() << std::endl;
return 0;
}
我的测试代码与增强源所在的目录相同。要编译我只需:
g++ -Icpp-netlib-0.12.0-final -o test test.cpp
它没有通过-I
找到包含但我收到了致命错误。
fatal error: 'boost/network/uri' file not found
#include <boost/network/uri>
^
1 error generated.
使用他们的库开始编写示例代码的正确方法是什么?
答案 0 :(得分:2)
猜测:
我的测试代码与增强源所在的目录相同。
如果您拥有的是已将boost标头解压缩到源代码目录,那么您的include语句将无效。 #include与&lt;&gt;仅搜索标准包含路径中的包含文件(/ usr / include&amp; so)。
所以你可以尝试使用带有“”的include语句,它也将从当前的源目录中搜索,或者更好的是,使用发行版中的软件包管理器将官方的boost开发软件包安装到你的计算机上。
如果源代码目录中有“cpp-netlib-0.12.0-final / boost”目录,编译器命令行参数“-Icpp-netlib-0.12.0-final”将帮助编译器找到boost在哪里启动g ++。
答案 1 :(得分:1)
关于您的Boost安装,您是否正确安装并链接Boost.date_time
?很多Boost只是标题;在这里,Boost.system
和Boost.Regex
,并且不需要单独的二进制文件。但是,Boost.Date_time
具有单独的二进制库,并且还需要其他安装步骤才能使用它。 [参考2]
虽然Boost主要是标题,但使用的是应用程序 cpp-netlib仍然需要与Boost.System,Boost.Date_time链接, 和Boost.Regex。 [参考1]
您的Boost库是否高于1.50.0版本?
您是否设置了BOOST_ROOT
环境变量?
boost根目录的路径(通常为/ usr / local / boost_1_60_0) 在文档和邮件中有时称为$ BOOST_ROOT 列表[参考2]
是否在/usr/local
安装了Boost?您可能需要root
次访问才能执行此操作。
您是否检查了安装的权限?如果您以root用户身份安装,则可能需要chmod
755对非root帐户的权限
参考文献:
1. http://cpp-netlib.org/0.12.0/getting_started.html#getting-started
2. http://www.boost.org/doc/libs/1_60_0/more/getting_started/unix-variants.html
希望这有帮助。