1

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

#include <D3DX11.h>

编译器会告诉我它找不到该文件(即使智能感知建议它)。但是,如果我将同一行放在不同的文件(myclass.cpp)中,一切正常。我不明白为什么在一个文件中使用时可以找到它,而在另一个文件中却找不到?到底是怎么回事 ?

编辑/注意:
这并不是 DirectX 特定的问题。当我决定问这个问题时,这正是我正在研究的。这也可能发生在其他地方。

4

1 回答 1

0

在较新版本的 Visual Studio 中,包含路径是在项目级别设置的。也许包含 cpp 的项目设置了正确的路径(请参阅 Jesse Good 在您的问题中的评论)。但是,对于您的解决方案中的另一个项目,情况可能并非如此。一旦您将 include 放入标头中,包括您的标头在内的所有其他项目也需要知道在哪里可以找到 directX-headers。

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

于 2013-04-24T05:38:43.297 回答