C语言中__uuidof的替代

Kyl*_*yle 12 c directx uuid guid visual-studio

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

ID3D11Texture2D* pBackBuffer = NULL;
hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer );
Run Code Online (Sandbox Code Playgroud)

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

rko*_*egi 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;
Run Code Online (Sandbox Code Playgroud)

用它代替__uuidof(ID3D11Texture2D).

  • 是的,做到了.我必须做的唯一其他改变是与`dxguid.lib`链接.谢谢. (3认同)