`
- 浏览:
1097977 次
- 性别:
- 来自:
北京
-
DLL 的优点
下表说明了当程序使用 DLL 时提供的一些优点:
使用较少的资源
当多个程序使用同一个函数库时,DLL 可以减少在磁盘和物理内存中加载的代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 Windows 操作系统上运行的程序。
推广模块式体系结构
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 故障排除工具
可以使用多个工具来帮助您解决 DLL 问题。以下是其中的部分工具。
Dependency Walker
Dependency 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 将位于以下目录中:
drive\Program Files\Microsoft Visual Studio\Common\Tools
DLL Universal Problem Solver
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 (http://support.microsoft.com/kb/247957/ ) 示例:使用 DUPS.exe 解决 DLL 兼容性问题
DLL 帮助数据库
DLL 帮助数据库帮助您查找由 Microsoft 软件产品安装的特定版本的 DLL。有关 DLL 帮助数据库的更多信息,请访问下面的 Microsoft 网站:
http://support.microsoft.com/dllhelp/ (http://support.microsoft.com/dllhelp/)
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
1.创建一个动态链接库,在该动态链接库中添加一个函数,该函数可以输出如图所示的图形; 2.在上面创建的动态链接库中添加导出类,并把绘制图形的函数添加到该类下; 3.创建一个动态链接库,在该动态链接库中添加一个...
在Linux系统中,动态链接库(Dynamic Linking Library,通常以`.so`为后缀)是一种重要的编程资源,它允许多个程序共享同一份代码,从而节省内存并方便代码维护。本教程将通过一个实例深入探讨Linux下C/C++语言如何...
### C++动态链接库编程深入浅出 #### 概述 动态链接库(Dynamic Link Library,简称DLL)是在Microsoft Windows操作系统环境下的一种共享库文件格式。它允许开发者将多个应用程序所需的公共功能封装到一个单独的...
### 动态链接库实验报告知识点梳理 #### 动态链接库(DLL)概念 动态链接库(Dynamic Link Library,简称DLL)是一种实现代码和数据模块化的方式。它是一种特殊的程序库,其中包含了可以被多个程序同时使用的代码和...
在现代软件开发中,为了代码复用和模块化设计,经常会用到静态链接库和动态链接库这两种形式的库。静态链接库在编译时期与应用程序链接,而动态链接库则在运行时期加载。 首先,我们来谈谈静态链接库。创建静态库的...
在编程世界中,动态链接库(DLL,Dynamic Link Library)是一种重要的共享代码资源,它可以被多个应用程序同时调用,以节省内存并实现代码重用。C# 作为.NET框架的一部分,同样支持创建和调用DLL。本文将深入探讨C#...
单片机动态链接库(Dynamic Link Library,DLL)是一种在嵌入式系统中实现代码复用和节省存储空间的技术。在传统的计算机系统中,DLL主要应用于Windows操作系统,而在单片机环境中,它同样能帮助我们优化资源利用,...
### 动态链接库的建立与调用 #### 实验目的 本实验旨在帮助学习者深入理解动态链接库(Dynamic Link Library,简称DLL)的工作原理及其在Windows环境下的具体实现方式。通过动手实践,学生将能够熟悉DLL的创建流程...
OpenCV动态链接库是计算机视觉领域中非常重要的一个组件,它是OpenCV库的动态版本,允许开发者在程序中调用其丰富的图像处理和计算机视觉功能。动态链接库(Dynamic Link Library,DLL)是一种Windows操作系统中的...
动态链接库(DLL,Dynamic Link Library)是Windows操作系统中一种重要的共享代码机制,它允许多个程序同时使用同一段代码,从而节省内存并提高系统效率。VC++是Microsoft开发的C++编译器,广泛用于Windows平台上的...
PB动态链接库(PB是PowerBuilder的缩写)是指由PowerBuilder开发的动态链接库文件。PowerBuilder是一款强大的、基于事件驱动的可视化编程工具,主要用于构建数据库应用系统。它以其易用性、高效的数据库访问能力和...
静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 对动态链接库,我们还需建立如下概念: (1)DLL 的...
Visual C++ 动态链接库是指在 Visual C++ 环境下开发和使用的动态链接库,动态链接库是一种共享代码的方式,可以提供给开发者一些可以直接使用的变量、函数或类。下面是对 Visual C++ 动态链接库的详细介绍。 首先...
### VC++动态链接库(DLL)编程深入浅出 #### 1. 概念与历史沿革 在软件开发领域,动态链接库(Dynamic Linkable Library,简称DLL)是一种非常重要的资源封装形式,广泛应用于Windows操作系统环境下的软件开发中。...
### 用Dev-C++制作动态链接库(DLL)详解 #### 概述 动态链接库(Dynamic Link Library,简称DLL)是一种在Windows操作系统下广泛使用的共享库格式。它允许程序和其他模块共享代码和数据,从而提高了软件开发的效率...
### 如何制作动态链接库(DLL)及其实现方法 #### 动态链接库简介 动态链接库(Dynamic Link Library,简称DLL)是Windows操作系统中一种共享库的形式,它允许多个应用程序共享相同的代码和数据。DLL文件包含了可以...
### 动态链接库(Dynamic Link Library,DLL)的使用 #### 一、概述 动态链接库(Dynamic Link Library,简称DLL)是Windows操作系统中的一种共享库形式,它允许多个应用程序共享相同的代码和数据,从而减少了内存...
在VC++环境中,动态链接库(DLL)是一种高效利用系统资源的方法,它可以将代码和数据共享给多个应用程序,从而减少内存占用和提高程序执行效率。本教程将详细讲解如何使用VC++来设计和构建动态链接库,并通过创建...
Dynamic Link Library,即动态链接库,是Microsoft在Windows操作系统中实现共享函数库概念的一种实现方式,这种库包含了可由多个程序同时使用的代码和数据 它其中windows中 一些作为DLL实现的文件有:ActiveX控件(....
### Matlab动态链接库编程技术详解 #### 摘要 本文深入探讨了如何在Matlab环境中利用动态链接库(Dynamic Link Library,DLL)技术来增强程序性能和功能。通过使用DLL,用户能够在Matlab中调用其他编程语言(如C/...