Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的uuuIdof的替代方案_C_Visual Studio_Directx_Uuid_Guid - Fatal编程技术网

C中的uuuIdof的替代方案

C中的uuuIdof的替代方案,c,visual-studio,directx,uuid,guid,C,Visual Studio,Directx,Uuid,Guid,我正在处理一个使用DirectX的C项目,我遇到了一个问题。某些DX调用需要一个IID对象,通常使用\uuidof生成。这需要创建一个RenderTargetView。DirectX示例/教程可执行以下操作: ID3D11Texture2D* pBackBuffer = NULL; hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer ); 当我试图调用C代码中的

我正在处理一个使用DirectX的C项目,我遇到了一个问题。某些DX调用需要一个
IID
对象,通常使用
\uuidof
生成。这需要创建一个RenderTargetView。DirectX示例/教程可执行以下操作:

ID3D11Texture2D* pBackBuffer = NULL;
hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer );

当我试图调用C代码中的<代码>·uuIDOF/<代码>时,我得到编译器错误:<代码>错误19错误C423:非标准扩展:“仅在C++中支持的‘{ uuIDOF’”关键字,而不是C < /代码>。DirectX有一个C接口,所以我想一定有办法做到这一点,但我不知道会是什么。有人知道吗?

< P> <代码> uuuIDOF//COD>只在C++中可用,如错误描述。我认为您已经在DX头文件中定义了C接口的GUID

d3d11.h

EXTERN_C const IID IID_ID3D11Texture2D;

使用它而不是
\uuidof(ID3D11Texture2D)

您必须找到类的uuid或“guid”。它应该在directx sdk(旧版)或平台sdk(在Windows Vista和Windows 7上)的某些头文件中,这取决于您使用的是什么。

C程序员通常只将UUID定义为源文件中的某个常量。是的,就是这样。我唯一需要做的其他更改是链接到
dxguid.lib
。谢谢。如果你真的在使用C.
ID3D10Texture2D*pBackBuffer;swapchain->lpVtbl->GetBuffer(swapchain、0和IID_ID3D10Texture2D和pBackBuffer)