• 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 > CoCreateInstance函数失败,返回值为REGDB_E_IIDNOTREG0x80040155

CoCreateInstance函数失败,返回值为REGDB_E_IIDNOTREG0x80040155

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

佚名通过本文主要向大家介绍了cocreateinstance函数,cocreateinstance,cocreateinstance失败,cocreateinstanceex,c cocreateinstance等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: CoCreateInstance函数失败,返回值为REGDB_E_IIDNOTREG0x80040155
描述:

使用代码:
CoInitialize(NULL);
IComponentInterface * pInterface = NULL;
hr = CoCreateInstance(CLSID_MyComponent, NULL, CLSCTX_ALL, IID_IComponentInterface, (PVOID*)(&pInterface));
就是这一句返回REGDB_E_IIDNOTREG.
IComponentInterface的实现代码(部分关键代码)。
IClassFactory::CreateInstance(IUnknown pUnknown, REGIID riid, PVOID * ppv)
{
    if (pUnknown){
      对象不支持聚合。
    }
    CComponentInterface * pInterface = new CComponentInterface;
    if (pInterface){
    return pInterface->QueryInterface(riid, ppv);
    }
    else{
        无法建立对象实例
    }
}
CComponentInterface : public IComponentInterface;
CComponentInterface::QueryInterface(REFIID riid, PVOID* ppv)
{
    HRESULT hr = E_FAIL; // 我改为其他的错误也不行
    if (IsEuqalIID(riid, IID_IComponentInterface)){
        *ppv = (IComponentInterface *)(this);
        hr = S_OK;
    }
    else if (IsEuqalIID(riid, IID_IUnknown)){
        *ppv = (IUnknown *)(this);
        hr = S_OK;
    }
    return hr;
}
我可以得到IUnknown接口,但调用IUnknown->QueryInterface(IID_IComponentInterface, &pInterafce)时也出错。
我是在COM组件中调用上面的代码的。
请各位大侠帮帮忙。谢谢。


解决方案1:

我前几天也写了个DLL,结果也是这样的错误,我查了一天,原来是在注册的时候把CLSID写成了CLISID,哈哈。
你看看有没有相同的错误!

解决方案2:

请看一下IID_IComponentInterface这个变量的定义,检查一下它的值是否和在.IDL文件中的一样,可能你某次不小心修改了.IDL文件中的相关部分

解决方案3:

hr = CoCreateInstance(CLSID_ComponentInterface, NULL, CLSCTX_ALL, IID_IComponentInterface, (PVOID*)(&pInterface));
改成这样看看

解决方案4:

从字面上看是没有注册IID
你查一查注册表,看看clsid键下有没有CLSID_MyComponent


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

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

  • CoCreateInstance和CoCreateInstanceEx的区别??
  • 抓狂!看了几天了,CoCreateInstance总是出错!!!!救命啊!
  • CoCreateInstance的内部实现问题??
  • CoCreateInstanceEx问题
  • CoCreateInstance调用成功,CoGetClassObject调用失败,为什么?
  • 调用CoCreateInstance函数报“errorC2065:IID_IShellLink:未声明的标识符”是怎么回事?
  • 为什麽无法调用CoCreateInstanceEx?
  • 配置为COM+组件后,CoCreateInstance失败!
  • 一个非常简单的问题,关于CoCreateInstanceEx?
  • CoCreateInstance返回的错误码为800401F0是代表什么错误?

相关文章

  • 2017-06-04 如何给驱动sys加一道壳
  • 2017-06-04 急等帮助,如何映射该控件的事件??在线等!!!!求助
  • 2017-06-04 ATL编写COM时,如何给接口的method添加参数?
  • 2017-06-04 _COM_SMARTPTR_TYPEDEFIMediaSample,IID_IMediaSample;在C++6中怎样变换
  • 2017-06-04 新手请教几个小问题
  • 2017-06-05 如何把录音功能写在dll中
  • 2017-06-05 tserpentTang接分
  • 2017-06-05 dll中输出函数如何将参数传回?
  • 2017-06-04 OCX调用帮忙改一下,谢谢
  • 2017-06-04 如何用外部程序对IE进行刷新

文章分类

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

最近更新的内容

    • 谁能解释一下线程句柄和线程ID的区别和联系?
    • ocx中如何加入一个Rectangle??
    • 求OPC服务器或客户端源代码
    • 如何通过IE的COM接口,拦截通过“我的电脑”窗口打开的网站
    • 如何使本方鼠标失控?
    • vc如何调用com接口的dll
    • forcelibrary的问题dll注入
    • 如何将数据从excel导入到CListCtrl中?
    • 编了个截获键盘输入信息的钩子程序,但是有几点困惑,望高手指点………………!!谢谢^-^
    • 100分归他了:谁能提供在VC中打开PowerPoint文件的源代码

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

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