动态链接库DLL

函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。

静态库:

在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件(.EXE文件)。在多个同样的程序执行时,系统保留了许多重复的代码副本,造成内存资源浪费。

动态库:

使用动态库时,有一个引入库lib和一个DLL。引入库lib包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数。使用DLL的动态链接并不是将库代码拷贝,只是在程序中记录了函数的入口点和接口,在程序执行时才将库代码装入内存;不管多少程序使用DLL,内存中都只有一个DLL的副本;当没有程序使用它时,系统就将它移出内存,减少了对内存和磁盘的要求。

静态库中不能再包含其他的动态或静态库,而动态库则可以。

编译器寻找库文件的顺序是

1、程序员指定的库文件目录

2、当前工程的工程目录

3、windows目录

4、system32

5、系统的环境变量

待续,然后接着说动态链接库加载的隐式链接和显式链接。

原文地址:https://www.cnblogs.com/codergeek/p/3488435.html