在Microsoft DirectX示例的D3D12HelloWindow project中,引用了IID_PPV_ARGS
。当我在VS2017企业中使用F12导航时,我到达combaseapi.h
,但是/showincludes
编译器的输出根本没有引用它。
最后,项目编译并正确运行,但我不知道直接或间接包含哪个标题combaseapi.h
?
如何找到使用combaseapi.h
的标头?
目标/问题是了解某个实现(某个DirectX 12方面),所以我可以用它来丰富我自己(在这种情况下是一个DirectX 12 WPF资产)。
答案 0 :(得分:1)
我自己创造了一个非常小的例子。它不起作用,但成功编译:
#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
:
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个标题包括combaseapi.h
。
我使用的是Windows 10.
中看不到任何评论也许尝试再次检查调试器输出?