c++ - 在结构中存储 COM 指针

标签 c++ com struct pointers

每次我尝试将 COM 指针存储到结构中,然后尝试使用原始指针时,我的程序都会崩溃。我没有调试权限来准确判断问题所在。

pRend->cp = cpRT;

ID2D1SolidColorBrush *scBrush;
ERF(cpRT->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::CornflowerBlue), &scBrush));

它在 CreateSolidColorBrush 上崩溃。但是,如果我注释掉 pRend->cp = cpRT,它不会。 顺便说一下,pRend->cp 和 cpRT 的类型是 ID2D1HwndRenderTarget *。

最佳答案

而不是直接分配 QI 然后存储,即

pRend->cp = cpRT;

应替换为

cpRT->QueryInterface(&pRend->cp);

关于c++ - 在结构中存储 COM 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718972/

相关文章:

c++ - 接受整数或字符串的方法。 C++

java - Java 上的 DirectX 可能吗?

visual-studio - 当/u arg 不起作用时,如何取消注册最初使用 RegSvr32 添加的 COM dll?

c - 初始化结构成员时出错

ios - 如何自动为 Swift 类创建初始化程序?

c++ - 为什么函数不能正确地转换指针(从基类到派生类)

c++ - 为带有参数的二进制文件运行 ldd

c++ - 从 1 个函数返回和输出 2 个整数

visual-studio - 为什么我的安装项目不执行我的自定义注册过程

结构标记可以在其作用域之前使用吗?