我正在处理一个使用 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 接口(interface),所以我想一定有一种方法可以做到这一点,但我不知道它会是什么。有人知道吗?
最佳答案
__uuidof
仅在 C++ 中可用,如错误所述。我认为您已经在 DX 头文件中定义了 C 接口(interface)的 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)
。
关于c - C 中 __uuidof 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892176/