2011-09-07 172 views
1

我已经安装了boost_1_41_0并尝试按照xml解析的一些教程:boost/property_tree/xml_parser.hpp:没有这样的文件或目录

#include <boost/property_tree/ptree.hpp> 
int main(){ 
    using boost::property_tree::ptree; 
    ptree pt; 
    cout<<"Here is an XML test!\n"; 
    return 0; 
} 

但问题是升压无法找到所需的标题:

gcc.compile.c++ bin/gcc-4.6.0/debug/main.o 
main.cpp:1:46: fatal error: boost/property_tree/ptree.hpp: No such file or directory 
compilation terminated. 

使用“”而不是<>也没有帮助。我也尝试将选项cxxflags = -I/pass /传递给/ this/header - 这也不行。只有当我使用标题的完整路径时 - 它才有效,但它依赖于另一个无法找到的头文件。

那么如何让boost安装寻找自己的include目录呢?谢谢。

+0

对我来说就像一个不正确安装的g ++ 4.6 ... –

回答

4

您肯定需要让编译器知道在哪里可以找到boost报头。但是,您必须将路径传递到“boost”目录所在的目录,而不是该包含文件所在的目录。所以,举例来说,如果您的升级头文件位于/opt/boost/1.47.0/include且您的文件位于/opt/boost/1.47.0/include/boost/property_tree/ptree.hpp,则必须使用-I-I/opt/boost/1.47.0/include/opt/boost/1.47.0/include传递给编译器。或者甚至更好,使用-isystem /opt/boost/1.47.0/include,这样你就不会从这些标题中得到警告。

,是的,你忘了,有在全局命名空间没有cout,你必须使用std::cout,或者说using std::cout;using namespace std; ...不提#include <iostream>。另外,main函数中的return语句在C++中不是必需的,它将默认返回0,除非您返回其他内容,因此您可以简单地删除该行。

希望它有帮助。祝你好运!

0

我不认为在版本1.41中存在xml_parser.hpp,而且我发现它也是1.49版本中的一个问题,它在我的debian wheezy 7.x机器上。我确实看到它在1.55版本中,所以它只是你获得最新版本的boost文件系统来找到丢失的软件包的问题。

+0

在我的机器上发现了一个可怕的解决方案。 boost 1.49在boost1.49-dev中包含xml_parser.hpp,如libboost1.49-dev所示:/usr/include/boost/property_tree/xml_parser.hpp –

0

我在我的机器上发现了一个可怕的解决方案。提高1.49不包含boost1.49-dev的xml_parser.hpp如图 libboost1.49-dev的:/usr/include/boost/property_tree/xml_parser.hpp

但是它不能被访问或下载我的机器上因为我的机器上安装的Spotify存储库导致了一个奇怪的错误。更奇怪的是,安全补丁每天都会发布并正确安装。当我清理sources.list文件并运行apt-get clean然后apt-get update时,我发现所有缺少的软件包(包括libboost1.49-dev)都回来了,然后再安装。然后这完全解决了这个问题。所以,你有两个问题之一:

要么,

  1. 你的系统是稍有错位。要测试这个断言是否正确,请运行apt-get clean然后apt-get update。如果您获取大量存储库错误,那么您知道如何解决该问题。删除有问题的存储库并重新运行apt-get清理和更新。
  2. 或者,您刚刚没有安装libboost1.49-dev来获取xml_parser.hpp。
相关问题