动态链接库是应用程序的一个模块,这个模块用于导出一些函数和数据供程序中的其他模块使用。应该从一下3个方面来理解这个概念:
1、动态链接库是应用程序的一部分,他的任何操作都是代表应用程序进行的。所以动态链接库在本质上与可执行文件没有区别,都是作为模块被进程加载道自己的地址空间的。
2、动态链接库在程序编译时并不会被插入到可执行文件中,在程序运行时整个库的代码才会调入内存,这就是所谓的“动态链接”。
3、如果有多个程序用到同一个动态链接库,windows在物理内存中只保留一份库的代码,仅通过分页机制将这份代码映射到不同的进程中。这样,不管有多少程序同时使用一个库,库代码实际占用的物理内存永远只有一份。
动态链接库的缩写是DLL,大部分动态链接库镜像文件的扩展名为dll,但扩展名为其他的文件也有可能是动态链接库,如系统中的某些exe文件,各种控件(*.ocx),等都是动态链接库。