boost/property_tree/xml_parser.hpp:没有这样的文件或目录
boost/property_tree/xml_parser.hpp: No such file or directory
我已经安装了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都回来了,然后可以安装。这样就完全解决了问题。所以你有两个问题之一:
,
- 您的系统有点混乱。要测试此断言是否正确,请运行apt-get clean,然后运行apt-get update。如果您获得大量存储库错误,那么您就知道如何修复问题。删除错误的存储库并重新运行apt-get clean and update。
- 或者,你没有安装libboost1.49-dev来获取xml_parser.hpp.
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- 使用 boost::p roperty_tree::p tree 将注释写入 ini 文件