2010-03-14 47 views
2

因此,我一直在爲過去幾周的項目工作,它使用了一些Boost庫。特別是我非常廣泛地使用boost :: dynamic_bitset庫。VC9 C1083試圖抽象包含依賴項後,無法打開包含文件:'boost ...'

到目前爲止,我已經有零個問題;但是今晚我發現了一些我必須解決的依賴問題;我試圖通過提供一個抽象回調類來實現。

有效我現在有以下幾點:

首先包括...

class OtherClassCallback 
{ 
public: 
    virtual int someOtherMethod() const = 0; 
}; 

class SomeClass 
{ 
public: 
    void someMethod(OtherClassCallback *oc) { 
     ... 
     oc->someOtherMethod(); 
     ... 
    } 
}; 

其次包括...

#include "SomeClass.h" 

class SomeOtherClass : public OtherClassCallback 
{ 
public: 
    int someOtherMethod() const { return this->someInt; } 
}; 

這裏的問題;自從我實現了這個班,我現在得到以下錯誤:

fatal error C1083: Cannot open include file: 'boost/dynamic_bitset/dynamic_bitset.hpp': No such file or directory

現在我越來越沒有其他的編譯器錯誤;這是一個非常重要的項目。我的包含路徑等是完美的;我的文件可以完全訪問,刪除更改可以解決問題。 編輯:我應該強調錯誤發生在一個文件中,它既不直接包含,也沒有以任何其他方式進行修改。

有沒有人有任何想法可能會發生什麼?我正在編譯爲VS9中的本機Windows可執行文件。

我應該承認,我對C++一般都很缺乏經驗,所以如果這件事非常直截了當,那麼就輕鬆一點;我無法弄清楚。

+0

編譯器標誌'/ showIncludes'可能有助於指出問題。 – 2010-03-14 08:04:55

回答

0

因此,事實證明,使用SomeOtherClass的我的一個可執行文件的包含列表中沒有Boost庫。如果我更注意輸出日誌,我早就意識到了這一點。

3>c:.. ClassUsingDynamicBitset.h(2) : fatal error C1083: Cannot open include file: 'boost/dynamic_bitset/dynamic_bitset.hpp': No such file or directory

3>SomeClassInExecutableProjectWhichDidntPreviouslyRequireBoostHeaders.cpp

2>Build log was saved at "file://c:...\BuildLog.htm"

2>some_library_already_including_boost_libraries - 0 error(s), 1 warning(s)

有效地,我沒有意識到VS正在同時構建我的庫/可執行文件,因爲我使用頭文件;實際上它是一個可執行文件,它以前對包含問題所在的Boost庫的類一無所知。

只要我擴展了前面提到的類來實現Callback接口,我就引入了一個依賴關係返回到Boost庫;並且我未能確保每個使用上述課程的項目都包含所有必需的標題。

相關問題