关于CoRevokeClassObject和CoUninitialize 我做了一个COM exe服务器程序,在COM对象没有完全释放(客户还拥有对象的接口指针)时。我强行退出程序。弹出一个内存访问错误(无法写入)的对话框。单步跟踪发现是最后程序结束时CoRevokeClassObject和CoUninitialize的问题。如果客户将COM对象全部释放则不回出现这个错误。有谁碰到过这个问题吗,如何解决? 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对啊,程序退出之前要全部释放COM对象 不,不是这两个函数的问题,而是先前的操作不正确引起的,因为这两个函数于客户端的引用无关.CoRevokeClassObject是从COM库中移除Class Object,不过要先调用CoRevokeClassObject再调用CoUninitialize 我的次序是先调用CoRevokeClassObject再调用CoUninitialize。这个问题就出现在客户是否有连接上。 请问楼上问题是否解决呢??我在作一个com的exe程序时也碰到这个问题,我开始是用C++作的这个com的exe,调试程序没有问题的,后来我把这个程序用到MFC中来却出现这个问题,我用vc带的那个OLE/COM的小工具查到我的那个组建,然后创建一个实例,这个组建能够运行起来,可当我直接关闭这个组建程序的话,就出现异常,说读内存出现错误,后来我单步调试组建程序,发现就是在CoRevokeClassObject处出现一个异常,然后在调用CoUninitialize处出现异常并且中断,弄得我百思不得其解,怎莫调用这两个函数会出现错误呢???在C++中调试这个程序是没有问题的,这个是不是应为mfc的处理机制有什么特殊的地方??是不是在MFC中非得用它提供的类厂类来注册类厂呀??请高手给予回答???? 是不是得用mfc提供的Ioleobjectfacotroy类来注册,而取代了CoRevokeClassObject和CoRegisterClassObject这两个api函数??这个问题太怪了,CoRevokeClassObject和CoUninitialize 本身没有什么特殊的地方呀?特别是在调用CoUninitialize 时竟然使程序中断不能再执行下去了,如果把这两个函数去掉的话就没有问题了,但这肯定是不对的呀??问一下,在MFC中,我好象只看到调用afxoleinitial,但好象没有看到结束时调用相应的释放COM库的函数呀??? 在你强制关闭时判断并全部释放COM对象,或者使用智能指针也行! 想问一下,出现这个问题到底是什么原因呢????在MFC的自动化实现中,我好象只看到调用afxoleinitial,但好象没有看到结束时调用相应的释放COM库的函数呀??? 全局变量的问题。 实时检查组合框中的输入 VC开发的程序,如何看那部分代码执行的时间比较长? 非常奇怪的WriteProcessMemory问题,请高手帮忙解决,400分 CSplitterWnd怎么设定最小Size,让用户不能再缩小? 大家救救我呀,急!急!急! 简单的编译出错信息,请问该如何改? 请教,我已知道今天的日期,即年、月、日,我想在程序中实现得到昨天或前天的日期,怎么办呢? ●●●●看似无分实有分——关于如何学好win32 API?●●●● 请问在水晶报表里面,怎样根据图片的路径和文件名,动态加载打印出来? oci问题 请问如何用sql语句改列名?
我在作一个com的exe程序时也碰到这个问题,我开始是用C++作的这个com的exe,调试程序没有问题的,后来我把这个程序用到MFC中来却出现这个问题,我用vc带的那个OLE/COM的小工具查到我的那个组建,然后创建一个实例,这个组建能够运行起来,可当我直接关闭这个组建程序的话,就出现异常,说读内存出现错误,后来我单步调试组建程序,发现就是在CoRevokeClassObject处出现一个异常,然后在调用CoUninitialize处出现异常并且中断,弄得我百思不得其解,怎莫调用这两个函数会出现错误呢???在C++中调试这个程序是没有问题的,这个是不是应为mfc的处理机制有什么特殊的地方??是不是在MFC中非得用它提供的类厂类来注册类厂呀??请高手给予回答????
在MFC的自动化实现中,我好象只看到调用afxoleinitial,但好象没有看到结束时调用相应的释放COM库的函数呀???