C语言中__uuidof的替代

我正在使用一个使用DirectX的C项目,我遇到了一个问题。 某些DX调用需要IID对象,通常使用__uuidof生成。 这需要做的一件事是创建一个RenderTargetView。 DirectX示例/教程执行此操作:

 ID3D11Texture2D* pBackBuffer = NULL; hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer ); 

当我尝试在我的C代码中调用__uuidof时,出现编译错误: Error 19 error C4233: nonstandard extension used : '__uuidof' keyword only supported in C++, not C DirectX有一个C接口,所以我想必须有办法做到这一点,但我不知道它会是什么。 谁知道?

__uuidof仅在C ++中可用,如所描述的错误。 我想你已经有了DX头文件中可用的C接口的GUID定义。

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/1306b57f-4b75-4f0c-b4f3-9bcc1e3a0dd6

d3d11.h

 EXTERN_C const IID IID_ID3D11Texture2D; 

使用它代替__uuidof(ID3D11Texture2D)

你必须找到class级的uuid或“guid”。 它应该在directx sdk(旧版)或Platform SDK(在Windows Vista和Windows 7上)的某个标题中 – 取决于您使用的是什么。