这篇文章只是对c++、dll和com的泛泛而谈,更为详细的内容请参考《com本质论》,这篇文章也算是《com本质论》第一章的读书笔记或总结。如有不对之处,希望大家批评指正。
在windows下使用c++编写代码的人代码复用的常用方式大概就是c++类、dll和com
一、c++代码重用的缺陷
以前的c++开发人员复用代码的方式大概就是获得一套.h和.cpp文件,然后把这些文件加入到自己的工程中编译、连接,最后生成exe文件。这种代码级的复用方式存以下的问题
1、c++程序员通常根据自己的需要修改别人提供的代码。开发者要使用代码,通常会根据源代码来理解代码的意图。更为老火的是,还要理解代码提供者的思路和编码风格
2、c++代码级复用导致了硬盘和内存空间的浪费
假如机器上有n个软件使用了类CA,在每个软件的存储空间中都会有class CA的一份编译生成的代码,在这n个软件同时执行时,会占用n×sizeof(CA)大小的内存空间
3、软件一经发布,除非重新编译整个软件,否则无法修改
假如发现了类CA存在一个bug,要修改CA的实现来修复这个bug,那么就只有重新编译整个软件。软件根本就不具备2进制的模块化特性。
二、如何解决以上问题————dll的引入
在window中,一个很好的技术就是动态链接库(dll),有了dll技术,客户可共享该dll的代码,这样在用户机器上无论有多少个软件使用该dll,都会只有一份该dll的拷贝。而dll提供给开发者的也只是.h文件,隐藏了代码的实现细节。
三、dll复用存在的问题