如何在我的c ++代码中包含boost项目

时间:2016-04-30 02:41:33

标签: c++ boost

我试图使用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.

使用他们的库开始编写示例代码的正确方法是什么?

2 个答案:

答案 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)

  1. 关于您的Boost安装,您是否正确安装并链接Boost.date_time?很多Boost只是标题;在这里,Boost.systemBoost.Regex,并且不需要单独的二进制文件。但是,Boost.Date_time具有单独的二进制库,并且还需要其他安装步骤才能使用它。 [参考2]

      

    虽然Boost主要是标题,但使用的是应用程序   cpp-netlib仍然需要与Boost.System,Boost.Date_time链接,   和Boost.Regex。 [参考1]

  2. 您的Boost库是否高于1.50.0版本?

  3. 您是否设置了BOOST_ROOT环境变量?

  4.   

    boost根目录的路径(通常为/ usr / local / boost_1_60_0)   在文档和邮件中有时称为$ BOOST_ROOT   列表[参考2]

    1. 是否在/usr/local安装了Boost?您可能需要root次访问才能执行此操作。

    2. 您是否检查了安装的权限?如果您以root用户身份安装,则可能需要chmod 755对非root帐户的权限

    3. 参考文献:
      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

      希望这有帮助。