当前位置: 主页 > CDM > 技术是什么 ?

技术是什么 ?

发布时间:2020-08-01 点击:CDM技术
  

  在使用这项技术的时候,CMath的所有方法都将被加到 CMath dll 的引出表(export list)中,而且链接器将会产生一个引入库(import library)。这个库了CMath的方法的符号。当客户链接引入库时,有一些存根会被引入到可执行文件中,它在运行时通知装载器动态装载CMath Dll。

  【代码共用问题】我有一个功能是在 Linux 下使用 C++ 写的,我该如何在 Windows 下使用 VB 来进行访问?

  这些都是COM要解决的问题!COM中的解决方案在Windows 下工作的还不错,很多大厂的软件都有COM API。不过开发COM组件,技术难度大,除BUG困难,对程序员要求高,同时没有得到其他软件厂商的足够支持,所以这个技术推广不起来。

  【所有的代码库都可以面向对象嘛】我想让C语言创建的代码库,也可以实现对象方法和属性,私有和公有可以嘛?(COM技术出现时,也是面向对象编程这个概念最火的时候)。

  【如何调用别的软件的功能】我想给 英雄联盟写个脚本,脚本要用到 Excel 中的功能,该如何实现?我想让在更改Excel 表格中的单元格数值后,立即同步到CAD的形中。

  如某一软件厂商发布一个类库(CMath四则运算),此时类库的可执行代码将成为客户应用中不可分割的一部分。假设此类库的所产生的机器码在目标可执行文件中占有4MB的空间。当三个应用程序都使用CMath库时,那么每个可执行文件都包含4MB的类库代码。当三个应用程序共同运行时,他们将会占用12MB的虚拟内存。问题还远不于此。一旦类库厂商发现CMath类库有一个缺陷后,发布一个新的类库,此时需要要求所有运用此类库的应用程序。此外别无他法了。

  操作系统中语言无关的组件平台。说白了就是类库,各种语言都能用。由于java,是虚拟机,使用其类库的语言需要在虚拟机上运行,不太满足操作系统的要求。真正能做到native类库的c++,编出来的库只能被c++使用,而不能像c语言生成的库一样,可以让很多语言使用。的问题在于多接口,微软后来力推IDispatch接口才让众多的脚本语言使用。软件组件的话好像和操作系统不共存,要么虚拟机方案(android)这种,要么这种。只是实现太复杂,需要资深程序员才能搞定。微软在win8引入了winrt,采用c++/cx编写,直接编译成二进制,脱离.,也似乎找到了一条组件话出。另类的苹果采用objective-c,也另辟蹊径,一方面找到了面向对象的优雅,另一方面也找到了自己的组件化道。当然,oc的消息机制有低性能的表现,所以关键时候放弃组件类库,直接上c,造成苹果系统设计相当另类,独树一帜。

  Don Box说COM IS LOVE。COM 的全称是 Component Object Model 组件对象模型。

  二、COM基础1、 COM基本知识1.1 返回值HRESULTCOM要求所有的方法都会返回一个HRESULT类型的错误号。HRESULT 其实就一个类型定义:

  解决问题的一个技术是将CMath类做成动态链接库(DLL ,Dynamic Link Library)的形式封装起来 。

  简单地把C++类定义从dll中引出来这种方案并不能提供合理的二进制组件结构。因为C++类那既是接口也是实现。这里需要把接口从实现中分离出来才能提供二进制组件结构。此时需要有二个C++类,一个作为接口类另一个作为实现类。让我们开始COM之旅。

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%