CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

关于IDispatch接口的早绑定和迟绑定!

楼主hkntcity(故乡的云)2003-12-02 21:47:30 在 VC/MFC / ATL/ActiveX/COM 提问

早绑定使用对象的类型库,在编译时刻检查参数,直接用分发ID调用Invoke函数;迟绑定不进行类型检查,通过成员函数找到分发ID。两者之间有什么区别吗?迟绑定时通过成员函数找分发ID,也是要通过类型库的!  
  那到底迟绑定有什么优点?能否举个例子!期待您的回复! 问题点数:0、回复次数:5Top

1 楼crystal_heart(笑看风云)回复于 2003-12-02 22:04:15 得分 0

upTop

2 楼public(九天十地菩萨摇头怕怕,霹雳金光雷电掌@!@)回复于 2003-12-03 09:29:06 得分 0

区别:  
                            早绑定       迟绑定      
  类型检查               有               无  
  分发id                   已知         GetIDsOfNames  
   
  从早绑定和迟绑定的调用过程来看,由于两者都要通过Invoke函数,而GetIDsOfNames调用的影响并不大,真正限制速度的是IDispatch::Invoke调用。Top

3 楼wangweixing2000(星(inspiration(灵感)))回复于 2003-12-03 09:30:41 得分 0

因为IDispatch接口是为宏语言设计,  
  早绑定:是运行时刻的类型检查,这是以速度的牺牲和编译时刻的类型检查为代价的  
  迟绑定优点是:从上面就可一看出来,速度快可是不健壮!要体现这一点只有在宏语言中,例如VB它对类型的要求没有C++那么严!COM接口都必须用VARIANT类型,至于VARIANT里面什么类型的值这就是类型库的事了!这个主要是用来编写灵活性与简单性比较类型安全更为重要的简单宏时,才用它的!!!!Top

4 楼hkntcity(故乡的云)回复于 2003-12-03 10:36:02 得分 0

感谢public和wangweixing2000的回复!  
  我们先不考虑速度的问题,那么早绑定和迟绑定的区别主要在于编译时刻类型检查和运行时刻类型检查,这两者之间有什么区别吗?Top

5 楼hkntcity(故乡的云)回复于 2003-12-03 10:51:15 得分 0

还有一个问题!  
  在实现可连接对象的时候,MFC使用IDispatch作为出接口。MSDN上说,这是利用了IDispatch的迟绑定特性,在运行时刻获取出接口的信息,动态创建接受器对象。这和编译时刻类型检查或者运行时刻类型检查有关系吗?如果不是这个原因,那又怎样解释呢?Top

相关问题

  • 双接口,早绑定接口,晚绑定接口和自动化(IDispatch),非自动化到底是什么关系?
  • 一个很基础的问题,什么接口才是双接口,是不是从IDispatch派生的接口就是双接口???
  • 如何用IDispatch接口在MFC客户端实现接收器?
  • 关于MFC下IDispatch和双接口的问题
  • 如何确定IDispatch->Invoke()调用的是哪一个接口的方法呢?
  • 关于IDispatch接口,欢迎写过COM,DCOM的高手给点描述
  • 接口
  • 接口
  • 如果一个com组件dll,没有类型库,没有实现idispatch接口,不能生成头文件
  • 如果一个com组件dll,没有类型库,没有实现idispatch接口,不能生成头文件(

关键词

  • 接口
  • 函数
  • 检查
  • 编译
  • 绑定
  • 类型
  • idispatch
  • 时刻
  • 调用
  • 运行

得分解答快速导航

  • 帖主:hkntcity

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo