cucci是什么牌子手表:请问各位大虾,动态链接库是什么东西。希望解释的详细点

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 20:49:02

DLL是DynamicLinkLibrary的缩写形式,动态链接库(DLL)是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。
可以把动态链接库理解为一个函数库。他包含了全局数据、编译过的函数和资源。动态链接库不能像普通的可执行文件那样直接运行,而是用来为其他的?exe文件或?dll文件提供共享函数库。DLL经过编译后,被装入到一个预定的基地址中,如果没有与其他DLL冲突,文件就被映射到进程中相同的虚地址上。与静态库不同的是,他不能直接链接到可执行文件中,而且在程序运行时才加载。多个应用程序可以共享内存中的动态链接库,这样就大大节省了内存的开支,并且可以有效地减少可执行文件的大小。
使用动态链接库为软件开发提供了便利条件。当对动态链接库中的内容进行了修改后,只要不改变接口函数的名称,那么使用动态链接库的应用程序就不必做任何修改。所以可以编写小的DLL模块,然后单独调试,让应用程序在运行时装载并链接他。
使用DLL提供了一种共享数据和代码的方便途径,由于多个应用程序可以共享同一个DLL中的函数,因此使用DLL可以显著的节省磁盘空间。尤其对于Windows应用程序,有很多操作都是标准化的,如果使用传统的静态链接方式,每一个需要完成这些操作的应用程序都必须在自己的执行文件中包括相同的代码,这不但使应用程序必须加载的时间变得更长,也浪费了磁盘空间。多个应用程序还可以同时共享DLL在内存中的同一份拷贝,这就有效地节省了应用程序所占用的内存资源,避免了频繁的内存交换,从而提高了应用程序的执行效率。由于DLL是独立于可执行文件的,因此,如果需要向DLL中增加新的函数或是增强现有函数的功能,只要原有函数的参数和返回值等属性不变,那么所有使用该DLL的应用程序都不需要重新编译。
DLL除了包括函数的执行代码以外,还可以包括诸如图标、位图、字符串和对话框之类的资源,因此可以把应用程序所使用的资源独立出来做成DLL。对于一些常用的资源,把他们做到DLL中后,就可以为多个应用程序所共享。
使用DLL还可以方便地建立支持多语种的应用程序。我们可以把多语种应用程序中所使用的语种相关的函数做到DLL中,只要不同语种的应用程序所调用的函数都具有相同的接口,就可以通过简单的更换DLL来实现多语种支持。?