Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost/property\u tree/xml\u parser.hpp:没有这样的文件或目录_C++_Gcc_Boost_Include Path_Boost Propertytree - Fatal编程技术网

C++ boost/property\u tree/xml\u parser.hpp:没有这样的文件或目录

C++ boost/property\u tree/xml\u parser.hpp:没有这样的文件或目录,c++,gcc,boost,include-path,boost-propertytree,C++,Gcc,Boost,Include Path,Boost Propertytree,我已经安装了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; } 使用而不是也没有帮助。我还尝试传递选项cxflags=-I/pass/to/this/header

我已经安装了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;
}
使用而不是也没有帮助。我还尝试传递选项cxflags=-I/pass/to/this/header——这也不起作用。只有当我使用头文件的完整路径时,它才能工作,但它依赖于另一个头文件,而它找不到


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

您肯定需要让编译器知道在哪里可以找到boost头。但是,您必须传递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,或者说使用std::cout;或者使用名称空间std;。。。不提包括在内。另外,C++中不需要main函数中的返回语句,默认情况下它将返回0,除非返回其他内容,这样您就可以简单地删除该行。
希望能有帮助。祝你好运

我认为xml_parser.hpp不存在于1.41版中,我发现在我的debian wheezy 7.x机器上的1.49版中也存在问题。我确实在boost 1.55中看到了它,所以您只需要使用最新版本的boost文件系统来查找丢失的包。

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

但是,由于安装在我的计算机上的spotify存储库导致了一个奇怪的错误,因此无法在我的计算机上访问或下载它。更奇怪的是,安全补丁每天都会出现并正确安装。当我清理了sources.list文件并运行apt get clean和apt get update时,我发现所有丢失的包(包括libboost1.49-dev)都返回了,并且可以在哪里安装。这样就完全解决了问题。因此,您有两个问题之一:

或者

您的系统有点损坏。要测试此断言是否正确,请运行apt get clean,然后运行apt get update。如果您获得了大量存储库错误,那么您就知道如何修复该问题。删除有问题的存储库并重新运行apt get clean和update。 或者,您还没有安装libboost1.49-dev来获取xml_parser.hpp。
在我看来,似乎是一个安装不当的g++4.6…在我的机器上发现了一个可怕的解决方案。boost1.49在boost1.49-dev中确实包含xml_parser.hpp,如libboost1.49-dev:/usr/include/boost/property_tree/xml_parser.hpp所示
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.