2012-12-24 69 views
2

我想爲項目使用Boost的Dynamic_bitset類,我(相信我)採取了我需要從完整的庫文件的任何子集。現在我正在做一個「沒有這樣的文件」包括問題與提升dynamic_bitset

#include "boost/dynamic_bitset.hpp"我manager.cpp文件裏面,編譯時,我得到這樣的:

In file included from manager.cpp:4:0: 
boost/dynamic_bitset.hpp:15:51: fatal error: boost/dynamic_bitset/dynamic_bitset.hpp: No such file or directory 

項目文件夾內的文件ierarchy是這樣的:

proj/extras.h 
proj/Makefile~ 
proj/manager.cpp 
proj/boost 
proj/boost/limits.hpp 
proj/boost/dynamic_bitset.hpp 
proj/boost/mpl 
proj/boost/mpl/if.hpp 
proj/boost/mpl/has_xxx.hpp 
proj/boost/iterator.hpp 
proj/boost/static_assert.hpp 
proj/boost/dynamic_bitset 
proj/boost/dynamic_bitset/dynamic_bitset.hpp 
proj/boost/dynamic_bitset/config.hpp 
proj/boost/config 
proj/boost/config/select_platform_config.hpp 
proj/boost/config/select_compiler_config.hpp 
proj/boost/config/user.hpp 
proj/boost/config/suffix.hpp 
proj/boost/config/select_stdlib_config.hpp 
proj/boost/dynamic_bitset_fwd.hpp 
proj/boost/config.hpp 
proj/boost/type_traits 
proj/boost/type_traits/is_same.hpp 
proj/boost/type_traits/is_pointer.hpp 
proj/boost/type_traits/remove_pointer.hpp 
proj/boost/type_traits/remove_const.hpp 
proj/boost/type_traits/is_base_and_derived.hpp 
proj/boost/type_traits/detail 
proj/boost/type_traits/detail/bool_trait_def.hpp 
proj/boost/type_traits/detail/yes_no_type.hpp 
proj/boost/pending 
proj/boost/pending/integer_log2.hpp 
proj/boost/detail 
proj/boost/detail/limits.hpp 
proj/boost/detail/dynamic_bitset.hpp 
proj/boost/detail/workaround.hpp 
proj/boost/lowest_bit.hpp 
proj/Makefile 
proj/generator.cpp~ 
proj/generator.cpp 

同樣的項目在我的大學的linux系統上編譯得很好(g ++ 4.2.4,但我認爲它很重要),但是在我的Ubuntu筆記本電腦上沒有這樣做(有上述錯誤)。爲什麼它找不到該文件,因爲它顯然存在?

我所有的包括是這樣:

#include <cstdlib> 
#include <cstdio> 
#include <iostream> 
#include "boost/dynamic_bitset.hpp" 
#include <cmath> 
#include <list> 
#include <unistd.h> 
#include <sys/sem.h> 
#include <sys/shm.h> 
#include <errno.h> 
#include <wait.h> 
#include <time.h> 
#include "extras.h" 

編譯如果我想明確地包括(本地..)文件夾

g++ -o manager manager.cg++ -Iboost -o manager manager.c

簡單地完成

+0

而您的include目錄指向'boost/dynamic_bitset'? –

+0

嗯,boost lib在源文件夾本身,我不應該在別處聲明它,我應該嗎?我曾嘗試使用-i選項編譯,並明確包含boost文件夾,但我得到了相同的錯誤 – Neyoex

+0

啊,請繼續,對不起。你在使用「#」還是<...>?#include?前者意味着「首先查看你的本地包含目錄」,後者意味着「這是一個包含系統的目錄,所以查看系統目錄。通常,當前目錄不是」系統目錄目錄「的一部分。換句話說,你應該有'#include'...'',而不是'#include <...>' –

回答

1
-I . 

至少如果您在包含boost的相同目錄中編譯。

你寫了-Iboost和#include「boost/...」。因此,如果有boost子目錄,它會在./boost中查找。

+0

是的,這是一個! –

+0

呃,你是對的,這是正確的方式。但我不明白爲什麼它需要顯式聲明源文件夾,以便在原始dynamic_bitset頭中包含請求的頭文件(不需要-I)。 – Neyoex

相關問題