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)

您必须找到类的uuid或"guid"。它应该在directx-sdk(旧版)或Platform sdk(在Windows Vista和Windows 7上)的某个标头中,这取决于您使用的内容。

相关内容

  • 没有找到相关文章

最新更新