我正在使用一个使用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接口,所以我想必须有办法做到这一点,但我不知道它会是什么。有人知道吗?
答案 0 :(得分:14)
__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)
。
答案 1 :(得分:2)
你必须找到班级的uuid或“guid”。它应该位于directx sdk(旧版)或Platform SDK(Windows Vista和Windows 7)中的某个标题中 - 取决于您使用的是什么。