0

为什么一个项目能够编译并找到必要的头文件,然后我添加了它找不到的行,它无法编译,我删除了该行(代码现在看起来与第一次编译时完全一样) 现在突然找不到它刚才找到的头文件?我没有更改任何文件结构,除了添加一行,删除它之外,绝对没有任何改变,一切都被破坏了。


我已经按照 Ogre3D 教程中的每条指令构建了第一个教程。一切正常,第一个教程编译并运行。所以我决定看看我是否可以得到一个不同的教程来做同样的事情,但是可惜编译器会抛出一个错误: No such file or directory when looking at the line #include "Ogre.h"。所以我回到第一个教程的框架,我包含所有行,它仍然按预期编译,然后我决定删除所有源文件和所有内容,我从 BaseApplication.h 中获取第一个包含指令, line is #include <OgreCamera.h>,我把这个孤独的行放在一个文件中main.cpp并尝试编译这个 1 行程序。出现同样的错误,找不到OgreCamera.h!什么??

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

更新

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

4

2 回答 2

1

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

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

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

于 2013-05-28T04:32:21.297 回答
0

我相信我知道我在这里对自己做了什么......并重现了问题

我按照教程设置了一个应用程序,当我决定复制整个项目时遇到了一些其他问题,我已经完成了繁琐的设置工作。没有意识到通过简单地复制粘贴目录来复制整个项目并没有进行必要的繁琐设置。因此,可能没有注意“目标是最新的”。构建消息,假设它编译了我更改了文件,它没有按预期编译,然后将它们改回原来的状态,它仍然没有编译,因为它们不再是最新的。

我会记住这个……很长一段时间。

于 2013-05-28T06:10:02.113 回答