簡體   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