我正在使用一个使用DirectX的C项目,我遇到了一个问题.某些DX调用需要一个IID对象,通常用__uuidof生成.需要一件事是创建一个RenderTargetView. DirectX示例/教程执行此操作:
ID3D11Texture2D* pBackBuffer = NULL; hr = g_pSwapChain->GetBuffer( 0,__uuidof( ID3D11Texture2D ),( LPVOID* )&pBackBuffer );
当我尝试在我的C代码中调用__uuidof时,我得到一个编译器错误:错误19错误C4233:使用非标准扩展名:’__uuidof’关键字只支持C,而不是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).