boost/property_tree/xml_parser.hpp:没有这样的文件或目录

boost/property_tree/xml_parser.hpp: No such file or directory

本文关键字:文件 tree property xml parser boost hpp      更新时间:2023-10-16

我已经安装了boost_1_41_0并尝试遵循一些xml解析教程:

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

但是问题是boost找不到所需的头文件:

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/to/this/header -这也不起作用。只有当我使用头文件的完整路径-它工作,但它依赖于另一个头文件,它找不到。

那么如何使boost安装寻找自己的包含目录?谢谢。

您一定需要让编译器知道在哪里可以找到boost头文件。但是,必须将path传递给"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,除非你返回别的东西,所以你可以简单地删除那一行。

希望有帮助。好运!

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

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

然而,由于我的机器上安装的spotify存储库导致了一个奇怪的错误,它无法在我的机器上访问或下载。更奇怪的是,安全修复程序每天都会出现,并且安装正确。当我清理了信息源。然后运行apt-get clean,然后运行apt-get update,我发现所有丢失的包,包括libboost1.49-dev都回来了,然后可以安装。这样就完全解决了问题。所以你有两个问题之一:

,

  1. 您的系统有点混乱。要测试此断言是否正确,请运行apt-get clean,然后运行apt-get update。如果您获得大量存储库错误,那么您就知道如何修复问题。删除错误的存储库并重新运行apt-get clean and update。
  2. 或者,你没有安装libboost1.49-dev来获取xml_parser.hpp.