首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的c++代码中包含boost项目

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

Stack Overflow用户
提问于 2016-04-30 10:41:33
回答 2查看 613关注 0票数 1

我正在尝试使用Boost的cpp-netlib编写一个非常简单的程序来解析示例c++文件中的HTTP URL。

代码很简单,如下所示:

代码语言:javascript
复制
#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;
}

我的测试代码与boost源代码位于同一目录中。要编译,我只需执行以下操作:

g++ -Icpp-netlib-0.12.0-final -o test test.cpp

代码语言:javascript
复制
fatal error: 'boost/network/uri' file not found
#include <boost/network/uri>
         ^
1 error generated.

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

EN

回答 2

Stack Overflow用户

发布于 2016-04-30 11:55:04

从这里可以猜到:

如果您已经将boost头文件解压到源代码目录中,那么您的include语句将不起作用。带有<>的#include只搜索标准包含路径(/usr/include &等等)中的包含文件。

所以你可以用"“代替include语句,这也会从当前的源代码目录中搜索,或者更好的是,使用发行版中的包管理器将官方的boost开发包安装到您的计算机上。

如果在启动g++的源代码目录中有"cpp-netlib-0.12.0-final/ boost“目录,编译器命令行参数"-Icpp-netlib-0.12.0-final”将帮助编译器找到boost。

票数 2
EN

Stack Overflow用户

发布于 2016-04-30 12:13:45

  1. 关于Boost安装,您是否正确安装并链接了Boost.date_time?Boost的大部分内容只包含头文件;这里是Boost.systemBoost.Regex,不需要单独的二进制文件。但是,Boost.Date_time有一个单独的二进制库,使用它需要额外的安装步骤。参考文献2

尽管Boost主要是头文件,但使用cpp-netlib构建的应用程序仍然需要与Boost.System、Boost.Date_time和Boost.Regex进行链接。参考文献1

  1. 您的Boost库是否高于版本1.50.0?
  2. 您是否设置了BOOST_ROOT环境变量?

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

是否在/usr/local中安装了

  1. Boost?您可能需要root访问权限才能执行此操作。
  2. 您是否检查了安装的权限?如果以超级用户身份安装,则可能需要将755权限chmod到非超级用户帐户

参考文献:

  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

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36950105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档