• 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 > 小弟初学COM,向高手请教!自动化的COM组件为什么没有实现类工厂,AddRef,QueryInterface,Release

小弟初学COM,向高手请教!自动化的COM组件为什么没有实现类工厂,AddRef,QueryInterface,Release

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

佚名通过本文主要向大家介绍了小弟初学COM,向高手请教!自动化的COM组件为什么没有实现类工厂,AddRef,QueryInterface,Release等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 小弟初学COM,向高手请教! 自动化的COM组件为什么没有实现类工厂,AddRef,QueryInterface,Release
描述:

小弟初学COM,向高手请教! 自动化的COM组件为什么没有实现类工厂,AddRef(),QueryInterface(),Release()
能给我详细讲讲自动化的COM组件中上面这几个东东是怎么调用的吗?
我用ATL写了个COM组件,可以用ASP调用,但是由于在ASP中不能调用Release()函数,不能释放COM对象.
所以我每次执行ASP脚本后都要手动Kill掉dllhost.exe.有什么办法能在ASP脚本中调用完COM对象后释放该对象.
谢谢.


解决方案1:

在dll的cpp文件中wizard自动生成了一个注册宏,里面就是类工厂和注册代码
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_CalcPi, CCalcPi)
END_OBJECT_MAP()
wizard中产生的封装类是基于模板的多重继承,其中一个基类CComObjectRootEx他实现了线程模型和AddRef,Release
template <>
class CComObjectRootEx<CComSingleThreadModel> : public CComObjectRootBase
{
public:
typedef CComSingleThreadModel _ThreadModel;
typedef _ThreadModel::AutoCriticalSection _CritSec;
typedef CComObjectLockT<_ThreadModel> ObjectLock;
ULONG InternalAddRef()
{
ATLASSERT(m_dwRef != -1L);
return _ThreadModel::Increment(&m_dwRef);
}
ULONG InternalRelease()
{
return _ThreadModel::Decrement(&m_dwRef);
}
CComObject实现了QueryInterface

解决方案2:

<<深入解析ATL>>三.四.五章很详细

解决方案3:

再次借花献佛
http://dev.csdn.net/develop/article/13/13924.shtm


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

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

  • 小弟初学COM,向高手请教!自动化的COM组件为什么没有实现类工厂,AddRef,QueryInterface,Release

相关文章

  • 2017-06-04 dbgrid问题
  • 2017-06-04 求助,如何列出系统注册得ocx控件?
  • 2017-06-05 工程中的def文件是用來干什麼的?
  • 2017-06-05 很奇怪的问题
  • 2017-06-05 如何获取DOS应用程序的键盘输入?
  • 2017-06-05 dll中导出的对话框的cancel按钮不起作用。
  • 2017-06-05 WTL程序中如何打开并按行读取文件?
  • 2017-06-05 从VB60中调用Vc++编写的Dll文件,出现错误,请各位大侠指正!(急,急,急!!!!!)
  • 2017-06-04 到底是为什么?提提建议也行)
  • 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
  • 微信公众号

最近更新的内容

    • MFC中用模糊查询ACCESS表时返回空的记录集,在ACCESS中查询正常,如何解决?
    • 为什么我用VB写的Hook在《奇迹》这个游戏里不起作用?
    • [请教]我在VS2005下,用ATL写了一个IEtoolbar,但是界面风格还是土的那种,怎么实现XP风格呢?
    • 怪问题???线程退出时报错?关于SOCKET的问题???救我!
    • MFCO42DDLL出错的问题
    • atl组件,32位和64系统下使用的问题
    • 求高手看看这段代码错在哪里,为什么老是"不能打开数据库!";
    • 如何在接口定义语言IDL中定义自定义结构体类型
    • 关于WindowsMediaPlayer64控件的问题
    • ##################有经验的大虾,请进~~小弟求教Word

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

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