【问题标题】:VC9 C1083 Cannot open include file: 'boost...' after trying to abstract an include dependencyVC9 C1083 尝试抽象包含依赖项后无法打开包含文件:'boost...'
【发布时间】:2010-03-14 05:39:55
【问题描述】:

所以过去几周我一直在研究一个项目,它使用了许多 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++ 非常缺乏经验,所以如果它是非常简单的东西,请放轻松;我想不通。

【问题讨论】:

  • 编译器标志/showIncludes 可能有助于查明问题。

标签: c++ boost include


【解决方案1】:

原来我的一个使用 SomeOtherClass 的可执行文件在其包含列表中没有 Boost 库。如果我更关注输出日志,我会更早意识到这一点。

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

3>SomeClassInExecutableProjectWhichDidntPreviousRequireBoostHeaders.cpp

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

2>some_library_already_including_boost_libraries - 0 错误,1 个警告

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

当我扩展上述类以实现回调接口时,我将依赖项引入到 Boost 库;而且我未能确保我使用该类的每个项目都包含所有必需的标头。

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 2017-01-28
    • 2011-02-07
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多