c - C 中 __uuidof 的替代方案

标签 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 代码中调用 __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/

相关文章:

c - 是否可以为数组名称分配一个新值?

c - 资源暂时不可用 - MSG_DONTWAIT 标志

c# - UWP M3U 流播放列表

visual-studio - 在 Web App 和 Console App 之间共享 Config 设置

c++ - 将两个较小的纹理渲染到一个较大的纹理上

c++ - fbx 网格负载几何变换

c - 在 C 中迭代不断更新的目录

c - 如何使用 C 系统调用和管道处理文件 I/O?

visual-studio - VS Image Watch 扩展 natvis 用于 BITMAPINFOHEADER?

c++ - DirectX 多个 DLL 版本?