总出现3 objects left active

hyzkui 2009-03-23 10:17:11
关于COM
我程序中用到的与COM有关的接口都release了的
hr=pFileReader->Release();
hr=pMpeg1Stream->Release();
pMp3Decoder->Stop();
hr=pMp3Decoder->Release();

但在调用 CoUninitialize()时总报错,提示:"3 objects left active."云云

还有为什么release时hr为什么返回的不是0,而是大于0的数字,请COM高手或碰到过该类问题的同行指点一下;表不感激
...全文
124 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
UDX协议 2009-03-25
  • 打赏
  • 举报
回复
我确实所有的都release掉了,只是realease为什么返回的是非0的HRESULT
-------------这已经说明,release的时机不对,或漏掉了些什么东西 ,并未真正release.

如果你没有增加自己写的filter,直接release graph即可。
hust_terry 2009-03-24
  • 打赏
  • 举报
回复
该不是graph没有stop吧?
hyzkui 2009-03-24
  • 打赏
  • 举报
回复
hr = CoCreateInstance(CLSID_AsyncReader,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(void**)&pFileReader);
hr = pGB->AddSourceFilter(mp3file.AllocSysString(),NULL,&pFileReader);
.
.
.
FileReader->Release();
就是这样实现的
问题在那里哟?
hyzkui 2009-03-24
  • 打赏
  • 举报
回复
我确实所有的都release掉了,只是realease为什么返回的是非0的HRESULT
UDX协议 2009-03-24
  • 打赏
  • 举报
回复
检查你的soource filter实现,参靠ball这个例子,很明显是没有release的源因。
hyzkui 2009-03-24
  • 打赏
  • 举报
回复
为什么就不能放在一个线程中呢?
zhoumingjie 2009-03-24
  • 打赏
  • 举报
回复
sourcefilter停止的时候,记得把线程结束。
hyzkui 2009-03-24
  • 打赏
  • 举报
回复
而且此处用了一个SourceFilter取接一个文件,这个文件一直处于被使用状态,在windows资源管理器都无法删, 我想一定是release没有成功吧,
麻烦帮忙分析一下
hyzkui 2009-03-24
  • 打赏
  • 举报
回复
graph进行了release()处理的

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧