繁体   English   中英

我无法在自己的标头中包含boost标头文件

[英]I can't include boost header files in my own header

util.h

#include <boost/property_tree/ptree.hpp>

namespace core {
    class Config {
        boost::property_tree::ptree pt;
....

我得到错误:

错误2错误C1083:无法打开包含文件:'boost / property_tree / ptree.hpp':没有这样的文件或目录d:\\ path \\ kserver \\ lib \\ util.h 1 1 kserver

编译选项的完整列表为:

/GS /TP /W3 /Zc:wchar_t /I"D:\Development\Tools\boost_1_57_0" /Zi /Gm- /Od /Ob0 /Fd"core.dir\Debug\vc120.pdb" /fp:precise /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "BOOST_ALL_NO_LIB" /D "CMAKE_INTDIR=\"Debug\"" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /GR /Gd /MDd /Fa"Debug/" /EHsc /nologo /Fo"core.dir\Debug\" /Fp"core.dir\Debug\core.pch" 

如果我在cpp文件中包含ptree.hpp ,则可以正常工作。

如何在头文件中定义变量? 请注意,该问题并非特定于ptree

更新:

我知道是什么。 我的解决方案是几个项目,其中一个是主项目使用的库。 lib头文件包含boost头文件。 当在我的主项目中包含头文件时,找不到hpp...。这意味着要构建主项目,我必须执行以下两项操作之一:

  1. 也将boost标头包含到主项目中
  2. 删除包含的标头,并且不向主项目公开boost变量

还有另一种选择,因此我仍然可以将头文件中的包含内容保留吗?

隐藏您的库的实现详细信息。 使用PIMPL惯用语也称为不透明指针 库的公开标头应仅包含公共接口以及专用实现指针。

包含路径可能是

  • 标头和源文件不一样

  • 相对的。 如果标头位于与源不同的路径中,则相对路径可能有效地指向错误的位置

错误发布,看来您的计算机上未安装boost开发库,如果已安装,则未正确配置编译器以从其安装目录读取它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM