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

标签 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;
}

但是问题是boost找不到需要的header:

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 - 这也不起作用。仅当我使用 header 的完整路径时 - 它才有效,但它依赖于另一个它无法找到的头文件。

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

最佳答案

您肯定需要让编译器知道在哪里可以找到 boost header 。但是,您必须将路径传递到“boost”目录所在的目录,而不是此包含文件所在的目录。因此,例如,如果您的 boost header 位于 /opt/boost/1.47.0/include 中您的文件位于 /opt/boost/1.47.0/include/boost/property_tree/ptree.hpp ,那么你必须通过/opt/boost/1.47.0/include使用 -I 到编译器:-I/opt/boost/1.47.0/include 。或者更好的是,使用 -isystem /opt/boost/1.47.0/include这样您就不会从这些 header 中收到警告。

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

希望有帮助。祝你好运!

关于c++ - boost/property_tree/xml_parser.hpp : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340385/

相关文章:

c++ - SDL2 填充圆 - 相同的操作,不同的结果

c++ - 如何在 C++ 枚举中处理常量表达式?

c++ - GCC,clang 不同意 MSVC 缩小转换

c++ - CMake项目 build 的问题

c++ - 如何在 linux 上为 c++ 创建动态库?

C++ STL 比较类 : how to parameterize comp-class behaviour?

c++ - typeid(复杂<double>(0.0,1.0)) != typeid(1.0i)

c++ - 初始化字符串逐元素会导致TLE,但此技术可以正常工作

linux - 执行二进制文件

multithreading - 使用 OpenMP 进行复杂线程处理