DDL详细的解析
DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:\Windows\System目录下。
如何了解某应用程序使用哪些DLL文件
右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。
如何知道DLL文件被几个程序使用
运行Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\
Current-Version\SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
如何解决DLL文件丢失的情况
有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。
DLL缺点:
(1)函数重名问题。
DLL里是一个一个的函数,我们通过函数名来调用函数,那如果两个DLL里有重名的函数怎么办?
(2)各编译器对C++函数的名称修饰不兼容问题。
对于C++函数,编译器要根据函数的参数信息为它生成修饰名,DLL库里存的就是这个修饰名,但是不同的编译器产生修饰的方法不一样,所以你在VC 里编写的DLL在BC里就可以用不了。不过也可以用extern "C";来强调使用标准的C函数特性,关闭修饰功能,但这样也丧失了C++的重载多态性功能。
(3)路径问题。
放在自己的目录下面,别人的程序就找不到,放在系统目录下,就可能有重名的问题。而真正的组件应该可以放在任何地方甚至可以不在本机,用户根本不需考虑这个问题。
(4)DLL与EXE的依赖问题。
我们一般都是用隐式连接的方式,就是编程的时侯指明用什么DLL,这种方式很简单,它在编译时就把EXE与DLL绑在一起了。如果DLL发行了一个新版本,我们很有必要重新链接一次,因为DLL里面函数的地址可能已经发生了改变。
DLL与COM的关系
DLL的缺点就是COM的优点。首先我们要先把握住一点,COM和DLL一样都是基于二进制的代码重用,所以它不存在类库重用时的问题。另一个关键点是,COM本身也是DLL,既使是ActiveX控件.ocx它实际上也是DLL,所以说DLL在还是有重用上有很大的优势,只不过我们通过制订复杂的COM协议,通COM本身的机制改变了重用的方法,以一种新的方法来利用DLL,来克服DLL本身所固有的缺陷,从而实现更高一级的重用方法。COM没有重名问题,因为根本不是通过函数名来调用函数,而是通过虚函数表,自然也不会有函数名修饰的问题。路径问题也不复存在,因为是通过查注册表来找组件的,放在什么地方都可以,即使在别的机器上也可以。也不用考虑和EXE的依赖关系了,它们二者之间是松散的结合在一起,可以轻松的换上组件的一个新版本,而应用程序混然不觉。
分享到:
相关推荐
本文将基于给定的文档内容,详细解析自定义动态链接库的实现、工作原理以及其实现过程。 ### 动态链接库的优势 动态链接库的主要优势在于其能够避免代码重复和资源浪费。在使用静态链接库的情况下,每个应用程序都...
动态链接库的基本原理是将某些函数和数据分离到单独的模块中,程序运行时按需加载这些模块。这样可以避免在启动时占用过多内存,同时允许程序在运行过程中更新或扩展功能,而无需重新编译整个程序。 在单片机中,...
### 动态链接库的超全面、详细介绍 #### 一、引言 动态链接库(Dynamic Link Library,简称DLL)是一种在Windows操作系统中常见的共享库形式。而在GNU/Linux环境中,对应的共享库通常被称为.so(shared object)...
动态链接库是一种可执行文件格式,它包含可供多个程序同时使用的代码和数据。与静态链接库不同,静态链接库在编译时被整合到目标程序中,而DLL在程序运行时才被加载,降低了内存占用和程序体积。 二、内存加载动态...
1. **动态链接库的基本概念**:DLL是一种包含可由多个执行文件同时使用的代码和数据的库。与静态链接库不同,DLL不会被编译进最终的可执行文件中,而是作为单独的文件在运行时被加载。 2. **导入库的概念**:导入库...
动态链接库是程序运行时需要的库文件,它包含了程序运行过程中需要用到的一些函数和数据。与静态链接库不同,动态链接库不会被编译进应用程序中,而是只有在运行时才会加载到内存中。这样可以节省磁盘空间和内存资源...
标题提到的“vb6生成和解析二维码条形码的动态链接库 标准dll”就是一个专门为此目的设计的组件。 动态链接库(DLL)是一种可共享的代码库,它可以被多个应用程序同时调用,以减少内存占用和提高代码重用性。VB6...
在LoadRunner这样的性能测试工具中,可以直接使用这个动态链接库来解析或生成JSON数据,从而进行更复杂的业务逻辑模拟和数据处理。 LoadRunner是一款功能强大的性能测试工具,由Micro Focus公司开发,用于模拟用户...
在应用程序中用 LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己所做的动态链接库调进来,动态链接库的文件名即是上述两个函数的参数,此后再用GetProcAddress()获取想要引入的函数。自此,你就可以象使用如同在...
在本文中,我们将深入探讨JSON协议下的数据序列化和反序列化,以及如何利用动态链接库和教程来高效地操作JSON数据。 **一、JSON数据序列化** 数据序列化是指将数据结构或对象转换为可传输或存储的格式。在JSON中,...
在“三菱FX-PLC-FX_BD通信动态连接库_DLL_使用手册1[1].1”中,详细阐述了FX_BD通信动态链接库的使用方法和步骤。手册通常包括以下几个方面: 1. **安装与配置**:介绍如何在开发环境中正确安装和配置FX_BD通信库,...
动态链接库(DLL)是Windows操作系统中的一个重要组成部分,它是一种可执行文件,包含了可供其他程序调用的函数和数据。在“服务器-动态链接库”的场景下,我们主要讨论的是如何在服务器环境中有效地利用DLL来优化...
这个库将关键的数据解析和封装功能集成为动态链接库(DLL),即DLL4plc.dll,目的是为了提高开发效率,使开发者可以快速地在自己的应用程序中实现与三菱PLC的交互。 首先,我们要理解三菱PLC,它是一种广泛应用的...
C++动态链接库解析 动态链接库(DLL,Dynamic Linker Library)是Windows操作系统中的一种共享代码机制,它允许多个程序共享同一段代码,从而节省内存资源和磁盘空间。DLL本质上是一个包含可执行代码和数据的库,可以...
"Json动态链接库"正是为了解决这一问题而存在的,它允许在wince系统中轻松地处理JSON数据。 动态链接库(Dynamic Link Library, DLL)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的函数和资源...
本文将深入探讨Android增量更新的源码实现以及动态链接库的相关知识。 一、Android增量更新源码解析 1. 差分计算:增量更新的第一步是计算两个版本之间的差异。这通常通过文件或二进制级别的差异算法实现,如Rsync...
VLC动态链接库文件是开发基于VLC媒体播放器的应用程序时不可或缺的组件。VLC是一款开源、跨平台的多媒体播放器,它支持多种视频和音频格式,以及网络流。在Windows 32位环境下,VLC的动态链接库文件(DLL)用于提供...
在IT领域,动态链接库(Dynamic Link Library, DLL)是一种重要的技术,它允许多个应用程序共享同一段代码,节省内存并简化软件更新。本资源包涵盖了C++和C#两种编程语言在动态链接库编程方面的深入讲解,同时包含了...
这个动态链接库(DLL)解决了HTML文档非规范化、不规则性的挑战,使得程序员可以方便地从网页中提取、修改或者遍历所需的数据。 在传统的网页抓取或解析过程中,人们常常用正则表达式来筛选HTML内容,但这种方法...