VC9 C1083在尝试抽象包含依赖项后无法打开包含文件:'boost ...'

时间:2010-03-14 05:39:56

标签: c++ boost include

所以我过去几周一直致力于一个项目,它使用了许多Boost库。特别是我正在广泛使用boost :: dynamic_bitset库。

到目前为止我一直没有问题;但是今晚我发现了一些我必须解决的问题之间的依赖关系;我尝试通过提供一个抽象的回调类来实现这一目的。

实际上我现在有以下内容:

首先包括......

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

这是问题所在;自从我实现这个类后,我现在收到以下错误:

  

致命错误C1083:无法打开包含文件:'boost / dynamic_bitset / dynamic_bitset.hpp':没有这样的文件或目录

现在我没有得到其他编译器错误;这是一个非常重要的项目。我的包含路径等是完美的;我的文件是完全可访问的,删除更改可以解决问题。 编辑:我应该强调错误发生在一个既不直接包含也没有以任何其他方式改变的文件中。

有没有人知道可能会发生什么?我正在编译VS9中的本机Windows可执行文件。

我应该承认,我对C ++一般都缺乏经验,所以如果它非常直截了当,请对我很轻松;我无法理解。

1 个答案:

答案 0 :(得分:0)

所以事实证明我的一个可执行文件是使用SomeOtherClass在其包含列表中没有Boost库。如果我更多地关注输出日志,我会早点意识到这一点。

  

3> c:.. ClassUsingDynamicBitset.h(2):致命错误C1083:无法打开包含文件:'boost / dynamic_bitset / dynamic_bitset.hpp':没有这样的文件或目录

     

3> SomeClassInExecutableProjectWhichDidntPreviouslyRequireBoostHeaders.cpp

     

2>构建日志保存在“file:// c:... \ BuildLog.htm”

     

2> some_library_already_including_boost_libraries - 0   错误,1警告

实际上,我没有意识到VS在使用标题时同时构建了我的库/可执行文件;它实际上是一个可执行文件,以前对包含问题所在的Boost库的类一无所知。

一旦我扩展了前面提到的类来实现Callback接口,我就将依赖引入了Boost库;我没有确保使用所述类的每个项目都包含所有必需的标题。