什么是DLL(Dynamic Link Library)
=
from:https://blog.csdn.net/u013471277/article/details/82802285
有不少补充和修改。
=
DLL的概念
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。
组成一个软件的文件中.dll占据相当多一部分。
通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。 例如,一个计帐程序可以按模块来销售。 可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。 因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。 例如,您可能具有一个工资计算程序,而税率每年都会更改。 当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。
优势
DLL的优点
DLL 依赖项
当某个程序或 DLL 使用其他 DLL 中的 DLL 函数时,就会创建依赖项。 因此,该程序就不再是独立的,并且如果该依赖项被损坏,该程序就可能遇到问题。 例如,如果发生下列操作之一,则该程序可能无法运行:
- 依赖 DLL 升级到新版本。
- 修复了依赖 DLL。
- 依赖 DLL 被其早期版本覆盖。
- 从计算机中删除了依赖 DLL。
这些操作通常称为 DLL 冲突。 如果没有强制实现向后兼容性,则该程序可能无法成功运行。
下表说明了为了帮助最大限度地减少依赖性问题而在 Microsoft Windows 2000 和较高版本的 Windows 操作系统中引入的更改:
- Windows 文件保护
在 Windows 文件保护中,操作系统禁止未经授权的代理更新或删除系统 DLL。 因此,当程序安装操作尝试删除或更新被定义为系统 DLL 的 DLL 时,Windows 文件保护将寻找有效的数字签名。
- 专用 DLL
通过专用 DLL 可以使程序避免遭受对共享 DLL 进行的更改。 专用 DLL 使用版本特定信息或空 .local 文件来强制要求程序所使用的 DLL 的版本。 要使用专用 DLL,请在程序根文件夹中找到 DLL。 然后,对于新程序,请向该 DLL 中添加版本特定信息。 对于旧程序,请使用空 .local 文件。 每个方法都告诉操作系统使用位于程序根文件夹中的专用 DLL。
DLL 故障排除工具
ependency Walker 工具可以递归扫描以寻找程序所使用的所有依赖 DLL。 当在 Dependency Walker 中打开程序时,Dependency Walker 会执行下列检查:
- Dependency Walker 检查是否丢失 DLL。
- Dependency Walker 检查是否存在无效的程序文件或 DLL。
- Dependency Walker 检查导入函数和导出函数是否匹配。
- Dependency Walker 检查是否存在循环依赖性错误。
- Dependency Walker 检查是否存在由于针对另一不同操作系统而无效的模块。
通过使用 Dependency Walker,您可以记录程序使用的所有 DLL。 这可能有助于避免和更正将来可能发生的 DLL 问题。 当安装 Microsoft Visual Studio 6.0 时,Dependency Walker 将位于以下目录中:
http://www.dependencywalker.com/(下载地址)
DLL Universal Problem Solver (DUPS) 工具用于审核、比较、记录和显示 DLL 信息。 下表说明了组成 DUPS 工具的实用工具:
- Dlister.exe
该实用工具枚举计算机中的所有 DLL,并且将此信息记录到一个文本文件或数据库文件中。 - Dcomp.exe
该实用工具比较在两个文本文件中列出的 DLL,并产生包含差异的第三个文本文件。 - Dtxt2DB.exe
该实用工具将通过使用 Dlister.exe 实用工具和 Dcomp.exe 实用工具创建的文本文件加载到 dllHell 数据库中。 - DlgDtxt2DB.exe
该实用工具提供 Dtxt2DB.exe 实用工具的图形用户界面 (GUI) 版本。
有关 DUPS 工具的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
247957 使用 DUPS.exe 解决 DLL 兼容性问题
DLL 帮助数据库帮助您查找由 Microsoft 软件产品安装的特定版本的 DLL。 有关 DLL 帮助数据库的更多信息,请访问下面的 Microsoft 网站:
http://support.microsoft.com/dllhelp/
(http://www.pc6.com/wenjian/dll/)
DLL错误的危害
=
=
=
推荐阅读
-
Could not load dynamic library cudart64_100.dll
-
php出现Unable to load dynamic library 'c:phpextensionsphp_mssql.dll'
-
一个link标签引用多个外部样式,这样写是有什么好处吗?_html/css_WEB-ITnose
-
什么是DLL(Dynamic Link Library)
-
PHP Warning: PHP Startup: Unable to load dynamic library D:/php5/ext/php_mysqli.dll_php技巧
-
PHP启动提示Unable to load dynamic library php_curl.dll怎么办_PHP教程
-
php出现Unable to load dynamic library 'c:phpextensionsphp_mssql.dll'
-
PHP Warning: PHP Startup: Unable to load dynamic library D:/php5/ext/php_mysqli.dll_php技巧
-
同样是外部样式,@import和link有什么区别
-
同样是外部样式,@import和link有什么区别