在D3D12HelloWindow project Microsoft DirectX 示例中有对 IID_PPV_ARGS
的引用。当我在 VS2017 企业版中使用 F12 导航时,我到达了 combaseapi.h
,但是使用 /showincludes
的编译器的输出根本没有引用它。
项目最终编译运行正常,但不知道是直接还是间接包含了哪个header combaseapi.h
?
如何找到正在使用 combaseapi.h
的 header ?
目标/问题是了解某个实现(某个 DirectX 12 方面),以便我可以使用它来丰富我自己的实现(在这种情况下是 DirectX 12 WPF Assets )。
最佳答案
我自己创建了一个非常小的例子。它不起作用但编译成功:
#include "stdafx.h"
#include "Objbase.h"
#include "Unknwn.h"
#include "Propsys.h"
int main()
{
IPropertyStore *pPropertyStore;
CoCreateInstance(IID_IUnknown, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pPropertyStore));
return 0;
}
在 Visual Studio 2017 中,我看到 combaseapi.h
通过 Objbase.h
header 包含:
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\Objbase.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\winapifamily.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\winpackagefamily.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\rpc.h
...
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\ole2.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\pshpack8.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\objbase.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\shared\pshpack8.h
1>Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\combaseapi.h
...
以上编译器输出应按以下方式读取。如果下面的行有更多的缩进,这意味着上面一行的标题包括下面一行的标题。我将 #include "Objbase.h"
包括在我的 .cpp 文件中,通过增加缩进,我看到了 combaseapi.h
(输出附件部分的最后一行)。由此我知道 Objbase.h
通过他的方式通过 5 个 header 包括 combaseapi.h
。
我正在使用 Windows 10。
我在Microsoft documentation 中没有看到任何备注
也许再次尝试检查调试器输出?
关于c++ - 如何在包含树中找到哪个 header 包含另一个 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908202/