编写一个输出DLL,产品已经发行,现在需要扩展这个输出DLL,在其中增加新的类,函数等等,比如操作系统中使用的DLL,在升级的时候,获取不同版本的同名DLL,以使整个系统得到延续如果现在自行实现这样的功能,改如何实现,如何定义、改变DLL的版本号,使得系统得意延续。

解决方案 »

  1.   

    首先,你的每个DLL同名是不可能的,除非你自己考虑每次都把它们放在不同的目录,我想这还不如每次都按照一定规律(比如:MYDLL1001, MYDLL1002)命名并放在同一目录下方便呢~不是么?
    第二,关于版本的问题可以这样解决:要么根据文件名来区分,也就是说文件名本身也包含版本号,就想是我举的例子那样,但是这样不保险,万一文件名被外界改了就不爽了;或者,在每个DLL中都搞一个GetVersion这样的导出函数,用它来得到版本号(这一点就是MS采取的策略),这样做的好处是版本号和文件名实现透明化,也就说无论文件名再怎么变,它的版本是不可能变的。其实,说了半天,楼主为何不考虑COM的进程内组件的设计思路呢,它就是把版本号和路径等这些可变的东西统统放在注册表里,然后外部程序使用的时候直接从注册表中查询一下版本和路径就可以了。将来更新的时候往注册表里写点新东西就可以了,这多方便。