动态链接技术

来源:互联网 发布:审批流软件 编辑:程序博客网 时间:2024/06/06 01:12

动态链接是相对于静态链接而言的,当多个应用程序一起运行,并且均调用了某函数的代码时,此时动态链接库允许这些应用程序共享该函数的代码,以达到节省内存的效果。

动态链接发生在程序运行时,其是在应用程序调用Windows API函数运行时才链接上的。但在链接时,链接器要先为调用者准备一些适当的信息,才能够在运行时顺利转到DLL执行。在动态链接中,所要调用的函数代码并没有被复制到可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息。


当应用程序开始运行时,在windows的管理下,应用程序和响应的动态链接之间建立关系。当药执行所调用的动态链接时,根据链接的描述信息,Windows转去执行动态链接中相应的函数代码。


一般情况下,如果一个应用程序使用了动态链接库,Win32系统通过内存映射文件保证内存中只有一份DLL的复制品。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间。如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像(而非复制品)。


使用动态链接技术可以减小可执行文件的大小,便于实现资源之间的共享,还有利于程序的维护与升级。


并不是只有.dll扩展名的文件才是动态链接库。像.exe、.fon、.drv、.mod都是动态链接库。