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

10-12 19:16