Com 我没有包括wrl.h头文件,但为什么我可以使用名称空间Microsoft::wrl

Com 我没有包括wrl.h头文件,但为什么我可以使用名称空间Microsoft::wrl,com,directx,c++-cx,wrl,Com,Directx,C++ Cx,Wrl,在这个cpp文件中,我只包含这些头文件 #include <D3D11.h> #include <d2d1.h> #include <d2d1_1.h> #include <DXGI1_2.h> #include <wincodec.h> #include <wincodecsdk.h> #include <D2d1helper.h> #include <Shcore.h> #包括 #包括 #包

在这个cpp文件中,我只包含这些头文件

#include <D3D11.h> 
#include <d2d1.h> 
#include <d2d1_1.h>
#include <DXGI1_2.h>
#include <wincodec.h>
#include <wincodecsdk.h>
#include <D2d1helper.h>
#include <Shcore.h>
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括

wrl.h在哪里?或者是否有此选项?

您可以添加编译器选项/showIncludes,以确定wrl.h从何处包含。在构建过程中,这将向您显示一个空间缩进树视图,其中显示了哪些文件包括哪些其他文件。确保进行重建,而不仅仅是增量构建,因为额外的include可能来自您的pch

如果include位于顶层,则可以检查其他编译器选项,以查看是否有人使用/FI在命令行中包含该文件


(为了记录在案,我在Win8上尝试了上面的头文件和VS 2012,但我没有看到包含wrl.h。因此,头文件必须被其他文件包含。)

最有可能的是,其他头文件中的一个本身就是
\include
ing wrl.h。有选择地将它们注释掉,看看是哪一个。您是否在列表(pch.h/stdafx.h)中省略了预编译的标题?如果是这样的话,也许也包括在内。在我的计算机上,#仅包括列表中的文件,并使用名称空间Microsoft::WRL生成
。@MooseBoys在pch.h文件中没有WRL.h。