• 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,为了解决DLL什么缺陷?

为什么要引进COM,为了解决DLL什么缺陷?

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

佚名通过本文主要向大家介绍了引进技术的缺陷,集成墙面的致命缺陷,薄膜表面缺陷检测仪,镀锌板常见缺陷,均线理论的缺陷等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么要引进COM,为了解决DLL什么缺陷?
描述:

华为得面试题目。
我得回答是:
    当新版本得DLL发生了变化,那么以前程序引用DLL的LIB文件大小和格局就可能发生变化,这样以往的程序在使用这个DLL的时候就会出现错误,主要是地址访问越界。
他们说不对,即使大小发生变化也可以使用,我不明白了,请各位高手解释一下


解决方案1:

函数的地址发生改变??只要DLL中函数名和参数不改变,EXE就不必再编译连接了吧?
---------------
(4)DLL与EXE的依赖问题
  我们一般都是用隐式连接的方式,就是编程的时侯指明用什么DLL,这种方式很简单,它在编译时就把EXE与DLL绑在一起了。如果DLL发行了一个新版本,我们很有必要重新链接一次,因为DLL里面函数的地址可能已经发生了改变。DLL的缺点就是COM的优点。

解决方案2:

(1)函数重名问题
  DLL里是一个一个的函数,我们通过函数名来调用函数,那如果两个DLL里有重名的函数怎么办?
  (2)各编译器对C++函数的名称修饰不兼容问题
  对于C++函数,编译器要根据函数的参数信息为它生成修饰名,DLL库里存的就是这个修饰名,但是不同的编译器产生修饰的方法不一样,所以你在VC里编写的DLL在BC里就可以用不了。不过也可以用extern "C";来强调使用标准的C函数特性,关闭修饰功能,但这样也丧失了C++的重载多态性功能。
  (3)路径问题
  放在自己的目录下面,别人的程序就找不到,放在系统目录下,就可能有重名的问题。而真正的组件应该可以放在任何地方甚至可以不在本机,用户根本不需考虑这个问题。
  (4)DLL与EXE的依赖问题
  我们一般都是用隐式连接的方式,就是编程的时侯指明用什么DLL,这种方式很简单,它在编译时就把EXE与DLL绑在一起了。如果DLL发行了一个新版本,我们很有必要重新链接一次,因为DLL里面函数的地址可能已经发生了改变。DLL的缺点就是COM的优点。

解决方案3:

楼主回答的真业余,要是我也不会要你的

解决方案4:

二进制标准

解决方案5:

COM使程序之间的各部分的耦合性降低了,真正做到了各个组件独立开发,只通过接口通信,便于组件的开发和升级管理。

解决方案6:

精典呀!引入COM可以解决调用DLL时必须将其加载到调用进程地址空间的弊端,有利于进程间通信。重要的是COM是一个进程那服务程序

解决方案7:

COM是使软件组件像对象一样彼此交互的一种二进制标准。引入COM可以解决调用DLL时
必须将其加载到调用进程地址空间的弊端,有利于进程间通信。

解决方案8:

COM并不是一种实现方法,它只是一种接口标准:-) 使用COM的目的是通用化实例.是实例!! :-) 而不是对象.

解决方案9:

《COM本质论》中第一章有详解!!

解决方案10:

如果是在一个团队里,程序也不大,用dll也没有什么不可以,都有源程序,开发调试比com要好多了.com优点很多,缺点也一堆


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

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

  • 为什么要引进COM,为了解决DLL什么缺陷?

相关文章

  • 2017-06-04 realplayer插件中如何获得正在播放的音乐的相关信息?
  • 2017-06-04 ATL中使用socket遇到的问题,恳请高手指点!着急!
  • 2017-06-04 关于atl中使用对话框的问题
  • 2017-06-04 简单问题,如何彻底卸载dll(解决后马上结帖)
  • 2017-06-05 请教DLL编程
  • 2017-06-05 请对APIHOOK技术有研究的大侠看过来
  • 2017-06-04 有什么工具可以查看正在运行的程序所使用的DLL?
  • 2017-06-04 急,我想在页面上作一个类似招行网上银行的密码输入框的activex,如何做?
  • 2017-06-05 一个难倒我的问题:如何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
  • 微信公众号

最近更新的内容

    • 关于静态连接库
    • 如何使用dll中的菜单
    • Activex中显示采集曲线的子控件怎么改成x,y轴的形式
    • ATL开发指南第三章中关于ATL类工厂的实现部分,怎么都看不明白,谁有好的更详细简明的资料?
    • 关于正则表达式
    • 急,static问题
    • IE8安装ActiveX的时候,publisher显示为UnknownPublisher,要怎样才能显示正确的Publisher,急,在线等!!!
    • CComVariant变量不够大
    • 一百个休眠的子线程会大量消耗系统资源吗?
    • 急!请高手帮忙,对话框中添加OCX控件后为什么对话框不再显示?

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

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