动态链接库概念(转)

动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
  动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。
  一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。与16位Windows不同,在Win32中DLL可以看作是每个进程自己的代码

时间: 2024-07-29 11:32:54

动态链接库概念(转)的相关文章

七大 Windows系统故障解析

  1."蓝屏"报错 问:系统在使用过程中屏幕出现一片蓝色并显示一些出错信息可谓家常便饭.尽管在出错信息之中可能会包含"按任意键继续"."按Ctrl十 Alt+Del重新重新启动,但所有未保存的信息将丢失"之类的说明文字,但通常不会像它所说的那样能够继续或者重新启动,很多时候系统会死机,此时除了按复位按钮外几乎没有其它选择.请问为什么会频频出现蓝屏? 答:Windows出现蓝屏错误的原因可能是多方面的,比如同时运行了多个比较大型的程序,而系统内存

SQL Server 基础概念集

server|概念 1.如何理解SQL Server的实例         在项目实施过程中,不少用户会有这样的需求:要求开发一套基于SQL Server的新系统,这套系统验收通过后,要和一个原有的SQL Server系统合并,共用一个服务器,所以不能为新系统提供单独的服务器(资金上不允许为开发提供单独的服务器).但是要保障新系统的开发而又不影响旧系统的正常运行,所以要求新系统使用单独的SQL Server服务.在SQL Server 2000以前的版本中,这样的要求是无法满足的,但在SQL S

利用VC调用动态链接库中的函数

自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中.显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中.Windows编程所需要的大量的API函数也被包含在Kernel DLL中.在Windows操作系统中使用DLL有很多优点,最主要的一点是多个应用程序.甚至是不同

VC++动态链接库(DLL)非MFC DLL介绍

  4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数. 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件).注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5.6节要讲述的MFC 动态链接库. 图6 建立一个非MFC DLL 在建立的工程中添加lib.h及lib.cpp文件,源

深入浅出Visual C++动态链接库(Dll)编程

文章作者:宋宝华信息来源:天极网 原始连接: http://soft.yesky.com/lesson/318/2166818.shtml?412 动态链接库(DLL)是Windows系统的核心,也是COM技术的基础,因此突破动态链接库一直是技术人员的攻坚目标,本期专题将由浅入深的介绍动态链接库的基础慨念.分类.实现和应用. 基础慨念 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数

DLL的概念、dll导出类

1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共享代码的方式.静态链接库把最后的指令都包含在最终生成的EXE文件中了:动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以"动态"地引用和卸载这个与EXE独立的DLL文件. (2) 静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的

dll的概念 dll导出变量 函数 类

1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别:   (1)静态链接库与动态链接库都是共享代码的方式.静态链接库把最后的指令都包含在最终生成的EXE文件中了:动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以"动态"地引用和卸载这个与EXE独立的DLL文件.   (2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含

《Cisco IOS XR技术精要》一1.3 操作系统概念

1.3 操作系统概念 Cisco IOS XR技术精要 计算机系统,包括路由器之类的嵌入式系统,都会带有一个负责向应用提供服务的操作系统.操作系统还提供了协调进程活动和访问硬件资源(如内存.网络接口.硬盘)等重要功能.图1-1给出了操作系统.应用,以及硬件资源之间的逻辑关系图. 操作系统基本功能 操作系统为应用提供了多种多样的服务.可提供的基本功能包括进程调度.中断处理.内存管理.进程间通信,以及常见例行程序(常见库).本节将对操作系统的这些基本功能做更详细的介绍. 1.进程调度 所谓进程(pr

深入浅出Win32多线程程序设计之基本概念

一.深入浅出Win32多线程程序设计之基本概念[转] 引言 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档. 理解多线程及其同步.互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易.许多程序员从来没有学习过嵌入式系统领域著名的操作系统Vx