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