图一:总结一下:静态库在编译链接时跟调用程序链接到一起了。合并成了一个文件。
因为被整体包含,运行时需要一起运行,浪费内存空间。
图二总结说:
因为链接融合到一块了,所以每次单一模块更新,就需要把整个文件全部都要重新编译链接,再重新发布。太麻烦了。牵一发而动全身。
所以有了动态链接库。当程序运行时,这个库再加载到内存中。独立于主程序exe文件之外。每次更新只更新一个dll即可。
动态库和静态库都有一个lib文件。静态库lib文件就是静态库封装的函数体。但是动态库的lib文件只包含了DLL导出的函数和变量的符号名,整整的函数体和数据还是在dll文件中。