什么是dll

2023-10-27

     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 冲突。 如果没有强制实现向后兼容性,则该程序可能无法成功运行。

下表说明了为了帮助最大限度地减少依赖性问题而在 Microsoft Windows 2000 和较高版本的 Windows 操作系统中引入的更改: 

  • Windows 文件保护
    在 Windows 文件保护中,操作系统禁止未经授权的代理更新或删除系统 DLL。 因此,当程序安装操作尝试删除或更新被定义为系统 DLL 的 DLL 时,Windows 文件保护将寻找有效的数字签名。

                     

  • 专用 DLL
    通过专用 DLL 可以使程序避免遭受对共享 DLL 进行的更改。 专用 DLL 使用版本特定信息或空 .local 文件来强制要求程序所使用的 DLL 的版本。 要使用专用 DLL,请在程序根文件夹中找到 DLL。 然后,对于新程序,请向该 DLL 中添加版本特定信息。 对于旧程序,请使用空 .local 文件。 每个方法都告诉操作系统使用位于程序根文件夹中的专用 DLL。

DLL 故障排除工具

  • Dependency Walker

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

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 帮助数据库

DLL 帮助数据库帮助您查找由 Microsoft 软件产品安装的特定版本的 DLL。 有关 DLL 帮助数据库的更多信息,请访问下面的 Microsoft 网站:

http://support.microsoft.com/dllhelp/

 

http://www.pc6.com/wenjian/dll/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是dll 的相关文章

  • Flask后端笔记(五)图书小例、数据库迁移、邮件扩展、蓝图

    Flask后端笔记 图书小例 数据库迁移 创建迁移仓库 创建迁移脚本 更新数据库 回退数据库 Flask Mail 不使用蓝图划分模块 循环导入问题 解决方法一 解决方法二 蓝图Blueprint 为什么学习蓝图 什么是蓝图 蓝图的运行机制
  • 分页按钮。

  • 颠倒字节数组顺序,然后加上51,输出十六进制字符串

    public static String byteTostring byte bytes 颠倒顺序 for int i 0 i lt bytes length 2 i byte temp bytes i bytes i bytes byte
  • 字节跳动前端实习生一面总结与反思

    一面采用了视频面试 面试过程如下 重点是考官出题 环节 一 自我介绍 二 考官出题 1 CSS样式 2 算法题 3 延迟问题 4 Event Loop JS事件循环机制 5 变量提升 作用域 6 CSS样式 7 算法题 8 算法题 三 项目
  • windows开启Hyper-V虚拟化功能并创建虚拟机

    Hyper V是微软Windows 10 自带的一款虚拟化产品 可以在windows10系统上创建虚拟机 Windows 11也自带Hyper V 以下是在Windows 11上开启的流程 进入BIOS开启序列化 笔者是华硕的主板 开机时狂
  • STM32 特殊引脚作为普通IO口使用的问题

    开发平台 Keil5 硬件平台 STM32F103RCT6 之前有有弄过的东西 因为没有记录忘记了 所以还得重新找资料寻找答案 所以说 博客还是得写啊 不然搞过的东西 又得重新再来一遍 1 OSC IN 引脚接有源晶振 OSC OUT 做普
  • 集线器、交换机、路由器、网桥、网关之间的区别

    集线器 HUB 集线器就是将网线集中到一起的机器 也就是多台主机和设备的连接器 集线器的主要功能以扩大网络的传输距离 是中继器的一种形式 区别在于集线器能够提供多端口服务 也称为多口中继器 集线器在OSI RM中的物理层 集线器的基本功能是
  • Ubuntu20.04搭建ftp服务(亲测通过)

    安装 sudo apt get install vsftpd 设置开机启动并启动ftp服务 systemctl enable vsftpd systemctl start vsftpd 启动 查看其运行状态 systemctl status
  • oracle insert into select 大数据量_Oracle的批量插入操作

    MySQL中支持一条SQL语句执行批量插入 Oracle中支持的形式有些不同 但是殊途同归 用的就是insert all into语法 创建测试表 SQL gt create table a1 id number a varchar2 1
  • 苹果手机怎么升级鸿蒙系统,鸿蒙2.0首个升级版本 与苹果的iOS14.3的安装包相当...

    华为如果失去了自研芯片 与国内其他手机厂商就没有区别了吗 并不是这样 与其他手机厂商完全依赖国外资源 仅仅只是组装零件不同 华为在没有自研芯片后 还有自研的鸿蒙系统 在去年年底华为就发布了鸿蒙2 0系统的测试版本 允许开发者自行申请进行测试
  • 时间序列概念及主要模型(白噪声,AR, MA, ARMA, ARIMA)

    时间序列分析 时间序列是按照时间顺序 按照一定时间间隔取得的一系列观测值 怎样做时间序列分析 时间序列分析尝试找出序列值在过去呈现的特征模式 假定这种模式在未来能够持续 进而对未来进行预测 时间序列基本特征 趋势性 序列相关性 随机性 时间
  • 老毛桃通过虚拟光驱安装Window10

    1 电脑插入老毛桃启动进入winPE 2 点击 开始 所有程序 磁盘管理 虚拟磁盘驱动器 2 打开后点击挂载 选择映像文件 即U盘里面的iso文件 右下角选择只读媒体 点击确定 关闭窗口 3 点击 开始 所有程序 安装维护 WinNTSet
  • Keil 出现报错:undefined symbol

    这个问题的意思是出现未定义的符号 主要有下面两种解决方式 目录 c文件没有添加进路径 工程文件没有添加 c文件没有添加进路径 出现这个问题首先看一下是不是 c文件没有添加进路径 我们写好了 c文件之后 保存在文件夹里 还需要文件夹里的 c文
  • 支付全流程的测试

    聚合支付与微信和支付宝区别与联系 聚合支付 支付宝和微信扫同一个二维码都可以支付 支持多种支付方式 聚合支付是与多方合作的平台 支付宝 微信 京东 有合作关系 支付宝 微信 京东 为第三方持牌照 支付牌照 机构 为什么要使用聚合支付方式 统
  • 学习FPGA之四:FPGA开发方法

    FPGA是一个很特殊的芯片 可能在2个月前 我还对它一无所知 我们熟知的芯片都是CPU GPU 或者知道ASIC的概念 但实际上 FPGA已经走过了30个年头 它目前已经成为一个包含各种先进电路 逻辑单元 接口 芯片封装 制造等技术的 集大
  • 【MATLAB】模糊控制篇 常用隶属函数介绍和实现

    在Matlab中已经开发出了11种隶属函数 让初学模糊控制的同学容易一头雾水 到底这些隶属函数有什么区别 实现的函数效果是怎么样的 在实际应该怎么选择呢 matlab模糊控制器的隶属函数选择 Trimf 三角形隶属函数 Trapmf 梯形隶
  • cmd如何一次运行多行命令

    在使用sonar扫描本地代码时 需要在windows的中执行以下命令 mvn sonar sonar Dsonar projectKey compoment service Dsonar host url https sonar intra
  • 如何制作个人网站(如何搭建个人博客)

    本文共5220个字 预计阅读时间需要17分钟 所有文字摘自互联网 仅做配图处理 首先制作一个网站需要 域名即example com 虚拟空间或云服务器 网站代码制作工具或网站后台管理工具 你可以百度出模板 一定的编程技能和代码理解能力 优秀
  • 9个Linux 查看系统硬件信息命令(实例详解)

    在Linux下 我们精要遇到需要查看系统的硬件信息 这里我罗列了查看系统硬件信息的实用命令 并做了分类 实例解说 执行环境 ubuntu 16 04 1 cpu lscpu命令 查看的是cpu的统计信息 root ubuntu home p
  • Redis的使用

    使用之前记得启动redis服务并连接redis redis命令大全见如下连接 这里只给大家讲解一些常用的 redis命令手册https www redis net cn order 一 redis常用命令 1 对key操作的命令 1 查看所

随机推荐

  • CSR867x — sink工程的编译与下载(run)

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的话
  • 怎么使用amd加速_PR剪辑应该怎么选硬件?英特尔CPU和英伟达显卡最合适

    大家好 欢迎来到降频评测室 本文章是科普这么一个东西 不少剪辑师常用的pr 这款剪辑软件有一个英特尔的核显加速的功能 已经出来相当长的一段时间了 但就我的观察 了解的人不多 要讲核显加速 必须先说一个东西 Adobe水银回放引擎 还有叫水银
  • Hystrix使用说明,配置参数说明

    一 什么情况下会触发fallback方法 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成 没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执行开始 但没有在允许的时间内完成 YES
  • 排序算法 —— 希尔排序(图文超详细)

    文章目录 希尔排序 直接插入排序的优化 1 分组思想 2 缩小增量的过程 3 排序步骤 3 1 排序五组数据的情况 3 2 排序两组数据的情况 3 3 排序一组数据的情况 4 代码分析 4 1 如何设置数据组数 4 2 直接插入排序实现思路
  • Java变量的作用域

    Java变量的作用域 在java中 一个变量的作用域为大括号 出了大括号就被销毁 例如 public class Test public static void main String args int sum 0 for int i 0
  • 45黑马QT笔记之Qt下的Udp的广播和组播

    45黑马QT笔记之Qt下的Udp的广播和组播 1 广播 在使用QUdpSocket类的writeDatagram 函数发送数据的时候 其中第二个参数host应该指定为广播地址 QHostAddress Broadcast此设置相当于QHos
  • 大功率光伏应用不同多电平变换器拓扑的比较研究(Simulink)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink实现 1 概述 文献来源 摘要 本文研究了多电平变换器的现
  • WPF---数据绑定之ValidationRule数据校验(六)

    一 概述 我们知道 Binding好比架设在Source和Target之间的桥梁 数据可以借助这个桥梁进行流通 在数据流通的过程中 我们可以在Binding这座桥梁上设置关卡 对数据的有效性进行验证 二 验证方法 我们利用Binding的V
  • 【Android】时间轴

    Android 时间轴 前言 一 主要思路 二 代码展示 1 RecyclerView适配器 2 MainActicity 3 布局文件 1 account item xml 2 activity main xml 总结 前言 提示 代码为
  • 区块链网络层简单介绍

    区块链网络层主要通过 P2P 技术实现分布式网络的机制 网络层包括 P2P 组网机制 数据传播机制和数据验证机制 因此区块链本质上是一个 P2P 的网络 具备自动组网的机制 节点之间通过维护一个共同的区块链结构来保持通信 P2P 主要存在四
  • mariadb 10.5创建用户和修改密码

    不知不觉MariaDB已经更新到10 5 8了 它较10 2和10 3做出的变化还是蛮大的 在mariadb10 5当中 将用户身份验证做了更改 所有用户帐户 密码和全局特权都存储在mysql global priv表中 该mysql us
  • JOCL 开发

    JOCL 介绍 jocl实际上就是对opencl用java语言进行了封装 许多代码都和opencl一样 这一点使得用过opencl的可以非常快的上手 可以到github查看源码 由于java没有指针 所以jocl不得不用Pointer来获取
  • wireshark抓包工具使用教程

    Wireshark是非常流行的网络封包分析软件 可以截取各种网络数据包 并显示数据包详细信息 常用于开发测试过程各种问题定位 本文主要内容包括 1 Wireshark软件下载和安装以及Wireshark主界面介绍 2 WireShark简单
  • 新手往GitHub建立仓库并上传本地文件(详细)

    文章目录 前言 一 创建一个GitHub仓库 二 配置ssh并绑定GitHub账号 1 配置ssh 2 绑定GitHub账号 三 上传文件 四 参考资料 前言 环境 windows 10 git bash GitBash获取 链接 http
  • C++中的lambda表达式用法及示例

    Lambda表达式 也叫lambda函数 或简称lambda 是从C 11开始引入并不断完善的 是能够捕获作用域中变量的匿名函数对象 因为C 是不能嵌套定义函数的 所以lambda就成了我们构造闭包的主要手段 和临时短函数 本文主要展示la
  • AxureRp9画一个注册并登录界面,并验证用户名、密码不能为空,进行相应的提示信息!

    之前用Axure9做了一个关于桔梗网的注册登录的界面 这次把功能补上 注册与登录 一 之前的界面 二 添加跳转和关闭功能 三 在注册界面中 登录界面一样的步骤 验证用户名 密码不能为空 并进行相应的提示信息 四 按下F5 看结果 同理登录界
  • python无法打开excle_无法打开在python cod中创建的excel文件

    我用python代码将一些 csv文件转换为 xls 但现在当我试图打开这些文件时 却出现一个错误 COUNT DIST2 xls无法访问 文件可能已损坏 位于没有响应的服务器上 或者是只读的 我在这个项目中创建了许多其他文件 它们都是 c
  • dubbo集群之Router模块

    dubbo如何集成路由 1 默认路由是怎么设置的 消费者服务启动时 会监听注册中心的变更 所以我调用下面的方法 RegistryDirectory public synchronized void notify List
  • Matlab画时域和频谱图

    data audioread filename wav wavread plot data spectrogram data 8192 7168 8192 44100 yaxis S F T P spectrogram x window n
  • 什么是dll

    DLL的概念 DLL Dynamic Link Library 文件为动态链接库文件 又称 应用程序拓展 是软件文件类型 在Windows中 许多应用程序并不是一个完整的可执行文件 它们被分割成一些相对独立的动态链接库 即DLL文件 放置于