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上)的某个标题中 – 取决于您使用的是什么。