每次我尝试将 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/