间歇性地找不到C ++头文件

时间:2013-04-24 03:01:36

标签: c++ visual-studio-2012 include

在使用某些C ++项目时,我注意到了VS2012中的一些奇怪行为。如果我将以下行放在头文件的顶部:(myclass.h)

#include <D3DX11.h>

编译器会告诉我它无法找到该文件(即使intellisense建议它)。但是,如果我将相同的行放在不同的文件(myclass.cpp)中,一切正常。我不明白为什么在一个文件中使用它时可以找到它,而不是另一个文件?发生了什么事?

编辑/注意:
这不是DirectX特定的问题。这就是我决定问的时候我正在做的事情。这也可能发生在其他地方。

1 个答案:

答案 0 :(得分:0)

在较新版本的visual studio中,包含路径设置在项目级别。也许包含cpp的项目具有正确的路径集(请参阅Jesse Good在您的问题中的评论)。但是,您的解决方案中的另一个项目可能不是这种情况。只要将include放在标题中,包括标题在内的所有其他项目都需要知道在哪里找到directX-headers。

小心intellisense - 如果你打开一个标题,它必须猜测你可能包含这个标题的cpp,显示的信息并不总是正确的。我认为在较新的版本中,它甚至取决于打开的其他文件/项目是否被选中。 编译器应该在包含标头时告知您cpp实际导致问题的原因。