什么是 Windows的DLL文件-DLL文件

什么是 Windows的DLL文件-DLL文件

DLL 全称是:dynamic-link library。 就是动态链接库。是windows系统下的程序运行所需要的文件。例如:系统级别的system.dll文件等等。

官方的定义是: DLL是一个集合了代码和数据的一个库。这个库可以在同一时间被多个应用程序执行。DLL的目的是模块化,代码的复用,提高系统内存的使用率。通过使用DLL,一个程序可以被模块化成单独的组件。举个例子:财务软件可以通过不同的模块来销售。只要一个模块已经安装了,那么这个模块就可以被加载到软件的主程序里去。因为每个模块都是相互独立的,加载到内存也快,并且可以做到在需要这个模块的时候才load进主程序里去。 另外,软件升级也变的简单了。因为每个DLL之间相互之间没有影响,在这种情况下,升级单个DLL文件对程序的其他模块不会造成影响。例如:我们有一个工资计算的软件,因为税率模块每年都有可能会变化,这样我们就是可以把税率的计算写到单独的DLL 库里, 这样每天我们就只需要升级税率的DLL文件就可以了,而不用去升级整个的工资计算软件。

DLL优势:

<1>, 占用更少的资源。

<2>, 提升模块架构。

<3>, 简化安装和部署。

DLL 依赖:

当一个DLL程序的执行要依赖另一个DLL的时候,DLL依赖就形成了。如果这个DLL不是独立的,当它所依赖的 DLL出现问题时,那么DLL本身就不能正常的运行起来。这种情况我们称之为DLL冲突。

如下情况会出现DLL冲突。

<1>, 所依赖的DLL升级到了一个新的版本。

<2>, 所依赖的DLL做了某种修复。

<3>, 所依赖的DLL被之前的版本覆盖了。

<4>, 所依赖的DLL从电脑上被删除了。

那么如何避免DLL冲突呢。

Windows推出了如下的方法:

第一:windows 文件保护策略。

操作系统会阻止system DLL被一个不被授权的代理所删除或者更新。因此,当我们安装一个新的软件,它尝试去删除/更新一些system DLL的时候,windows 文件保护策略会去寻找有效的数字签名。

简单类比:

作为一个Java开发,我们会用到很多的开源框架,比如:处理execle的PIO/打印日志的Log4J,持久化的Hiberate, Spring的jar等等这些,这些的开源库就类似于我们的DLL,同样的也有模块化,代码复用,提高开发效率等等的好处。

https://support.microsoft.com/en-us/help/815065/what-is-a-dll

推荐阅读