c++ - 当所有源代码都没有更改时,代码块如何从查找头文件变为无法找到它们?

标签 c++ include project codeblocks ogre3d

为什么一个项目能编译找到需要的头文件,然后我加了一行它找不到,编译不通过,我把那行去掉(现在的代码和编译时一模一样第一次)现在突然找不到它刚才能找到的头文件?我没有更改任何文件结构,除了添加一行、删除它之外绝对没有任何更改,一切都被破坏了。


我已经按照 Ogre3D 教程中的每条说明构建了 first tutorial .一切正常,第一个教程编译并运行。所以我决定看看我能不能得到 different tutorial做同样的事情,但是编译器抛出一个错误:在查看 #include "Ogre.h" 行时没有这样的文件或目录.所以我回到第一个教程的框架,我包含了所有行,它仍然按预期编译,然后我决定删除所有源文件和所有内容,我从 BaseApplication.h 中获取第一个 include 指令,行是 #include <OgreCamera.h> ,然后我将这一行放在一个文件中 main.cpp并尝试编译这 1 行程序。出现同样的错误,找不到OgreCamera.h !什么??

那么教程框架编译有什么特别之处,但当我尝试做基本上完全相同的事情时,它会抛出一个合适的。

更新

现在甚至发生了更奇怪的事情......我添加了行 #include "Ogre.h"到教程框架的 BaseApplication.h 文件,找不到 Ogre.h。所以我删除了那行并尝试编译程序(编译时间不超过 10 秒),现在它再也找不到 OgreCamera.h 了。 !但据我所知,它在任何形状或形式上都没有发生任何变化。现在这是令人发狂的困惑!

最佳答案

解析头文件的位置并未在代码本身中定义,而是在 IDE 和/或 code::blocks 项目首选项中定义。这tutorial与设置 Ogre 头文件的搜索目录更相关。

如果它在不久之前工作,而不是现在,我怀疑您可能犯了一个简单的错误,比如从 Debug 切换到 Release,只在项目属性中配置了 Debug 构建的搜索目录。 (单击构建选项默认选择调试而不是所有配置)。尝试在 Debug 和 Release 版本中重新添加 Ogre 目录。

Code::Blocks 还允许您在编译器和调试器设置中为常用库添加全局的 IDE 搜索目录。您还可以为 Ogre SDK 位置创建一个全局变量,以使其更容易添加到每个新项目中。 (#ogre.include),而不是添加完整/相对路径。

关于c++ - 当所有源代码都没有更改时,代码块如何从查找头文件变为无法找到它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16783258/

相关文章:

performance - 当你独自完成一个项目时,你是如何激发自己的活力的?

c++ - Visual Studio 2010 链接器查找多重定义的符号(在不应该的地方)

c++ - std::fmod(4.2, 0.12) 等于 epsilon * 1.5

c++ - 错误 : This compiler appears to be too old to be supported by Eigen

debugging - 如何调试 Ansible 包含和依赖项?

c++ - Qt项目结构

c++ - 在 c 和内联汇编之间传递参数

php - 将一些电子邮件包含在一个电子邮件中

php - 如何在 Symfony2 中包含一个类?

Visual Studio 2008下的C++项目结构