📄 19.1.2 使用动态链接库的好处.txt
字号:
19.1.2 使用动态链接库的好处
·可以采用多种编程语言来编写
我们可以采用自己熟悉的开发语言编写DLL,然后由其他语言编写的可执行程序来调用这些DLL。例如,可以利用W来编写程序的界面,然后调用利用VC++或Delphi编写的完成程序业务逻辑的DLL。
·增强产品的功能
在发布产品时,可以发布产品功能实现的动态链接库规范,让其他公司或个人遵照这个规范开发自己的DLL.以取代产品原有的 DLL.让产品调用新的 DLL.从而实现功能的增强。在实际工作中,我们看到许多产品都提供了界面插件功能,允许用户动态地更换程序的界面,这就可以通过更换界面DLL来实现。
·提供二次开发的平台
在销售产品的同时,可以采用 DLL的形式提供一个二次开发的平台,让用户可以利用该DLL调用其中实现的功能,编写符合自己业务需要的产品,从而实现二次开发。
·简化项目管理
在一个大型项目开发中,通常都是由多个项目小组同时开发,如果采用串行开发,则效率是非常低的。我们可以将项目细分,将不同功能交由各项目小组以多个 DLL的方式实现,这样,各个项目小组就可以同时进行开发了。
·可以节省磁盘空间和内存
如果多个应用程序需要访问同样的功能,那么可以将该功能以 DLL'的形式提供,这样在机器上只需要存在一份该 DLL文件就可以了,从而节省了磁盘空间。另外,如果多个应用程序使用同一个DLL.该 DLL的页面只需要放入内存一次,所有的应用程序就都可以共享它的页面了。这样,内存的使用将更加有效。
如图 19.1所示就是一个动态链接库被两个进程访问时的内存示意。本书前面的章节己经讲述过,当进程被加载时,系统为它分配一个 4GB的地址空间,接着分析该可执行模块,找到该程序将要调用哪些 DLL.然后系统搜索这些 DLL.找到后就加载它们,并为它们分配虚拟的内存空间,最后将DLL的页面映射到调用进程的地址空间。从图 19,1中,我们可以看到, DLL的虚拟内存有代码页面和数据页面,它们被分别映射到第一个进程的代码页面和数据页面。如果这时第二个进程也启动了,并且它也需要访问该DLL.这时,只需要将该DLL在虚拟内存中的代码页面和数据页面映射到第二个进程的地址空间即可。在内存中,只需要存在一份DLL的代码和数据。多个进程可以共享DLL的同一份代码,这样就可以节省内存空间。
图 19.1两个进程访问同一个 DLL时的情形
·有助于资源的共享
DLL可以包含对话框模板、字符串、图标和位图等多种资源,多个应用程序可以使用 DLL来共享这些资源。在实际工作中,可以编写一个纯资源的动态链接库,供其他应用程序访问。
·有助于实现应用程序的本地化
如果产品需要提供多语言版本,那么就可以使用 DLL来支持多语言。可以为每种语言创建一个只支持这种语言的动态链接库。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -