• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 成功的使用了CoInitialize,却在调用CoUninitialize的时候出错

成功的使用了CoInitialize,却在调用CoUninitialize的时候出错

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了尚未调用coinitialize,未调用coinitialize,coinitialize,coinitializeex,coinitialize null等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 成功的使用了CoInitialize,却在调用CoUninitialize的时候出错
描述:

::CoInitialize(NULL);
   HRESULT hr;
   try
   {
     hr=this->m_pConnection.CreateInstance("ADODB.Connection");
     if(SUCCEEDED(hr))
     {
return;
 }
   }
   catch(_com_error e)///捕捉异常
......
以上是初始化的code
然后在程序结束的时候调用
if (this->IsOpen()) 
{
this->m_pConnection->Close();
   this->m_pConnection->Release();  ---〉我释放了的呀!
this->m_pC
}
::CoUninitialize();
This代表同一个类。可惜在调试的时候
// Releases only if the interface is not null.
// The interface is not set to NULL.
//
void _Release() throw()
{
if (m_pInterface != NULL) {
m_pInterface->Release();-----〉错误发生时候停在这个地方,说是unhandle .....
}
}
可是我明明释放过了呀!
对于com我十分的不了解!所以还请大家帮忙!
谢谢喽!


解决方案1:

this->m_pConnection->Release();  ---〉我释放了的呀!
m_pConnection是不是一个智能指针?如果是智能指针,不需要调用release()函数。智能指针在析构函数中自动调用,如果你要提前释放智能指针的引用,你这样调用代码看看。
this->m_pConnection.Release();  ---〉注意这里用.操作符。

解决方案2:

我使用ADODB的聪明指针时也会经常碰到莫明其妙的问题。
后来就不用_ConnectionPtr而直接使用_Connectoin*就一切OK了,你也可以试试看。
_Connectoin *pConn = NULL; 
::CoInitialize(NULL);
ASSERT(SUCCEEDED(::CoCreateInstance(
__uuidof(Connection), NULL, CLSCTX_INPROC_SERVER,
__uuidof(_Connection), (LPVOID*) &pConn)));


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 多次调用CoInitialize没有什么问题吧?
  • 为什么MFCDLL中调用CoInitialize()总是返回失败?
  • 为什么我没用头文件也可以使用CoInitialize在线等
  • 如何知道组建已经初始化CoInitialize
  • Atl工程中提示尚未调用coinitialize
  • VC中用ADO多线程编程,CoInitialize的问题
  • CoInitialize是线程相关的吗
  • 发现很多时候不需要CoInitialize也可以去调用一些COM的功能啊。
  • 调用COM组件时的CoInitialize和CoUninitialize时机
  • 请教关于::CoInitialize的问题

相关文章

  • 2017-06-04 如何设置WEB页面为桌面墙纸100分在线等
  • 2017-06-04 如何在Web显示ActiveX的安装过程
  • 2017-06-04 idl生成的_hh_ih,语法好像有点问题
  • 2017-06-05 dll有什么好处?
  • 2017-06-04 100分在线等!---关于Html对话框的问题!
  • 2017-06-05 线程的疑惑(2)
  • 2017-06-05 请高手指教:我VC中引入一个dll时报错,咋办?高分相谢!
  • 2017-06-04 多媒体编程求助
  • 2017-06-04 []一个有关COM和DLL的问题![]
  • 2017-06-05 如何用全局钩子拦截别的进程创建窗欍消息这是我的代码不知道哪儿有问题,没有拦截到其它进程的消息!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请各路大虾帮忙!vc中利用mapx50在指定点显示特定图元的问题!
    • 关于OCX用于IE,各位帮看一下问题出在哪
    • 如何调用其它目录下的DLL??
    • ATL注册服务后,当启动时加载dll,停止时卸载dll,但停止时出现“错误1067:进程意外终止”。怎样卸载dll才不出错?
    • 关于注册OLE的问题,求救!!
    • 一个关于线程的执行时间的问题?(立即给分)
    • [初学求助]怎样在子线程下画图?
    • 动态创建OCX问题
    • 超急,求MFC编写的控件例子
    • 程序高手请进(关于钩子急!!!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有