定义:

静态库与动态库都属于库,库从本质上来说就是种代码重用的方式。

把需要重复使用的公共代码抽离出来,生成库文件,外部程序只需包含库文件,调用相关接口即可

静态库与动态库区别:

静态库:需要库的.h和.lib文件,程序编译链接时,在链接阶段会把整个静态库打包到程序中,此时静态库就成为了程序的一部份

优点:

和动态库相比不需要带额外.dll,减少程序的依赖

运行速度快,不需要在运行期间动态加载dll

缺点:

程序体积变大,即使只使用库中一部份代码,也需要包含整个静态库

当静态库需要增加和修改代码时,需要重新编译静态库,而且包含静态库的程序也得重新编译

动态库:需要库的.dll文件,程序编译时并没有把动态库编译进来,只包含它需要的函数的引用表,在程序运行时才会加载动态库

优点:

动态库增加和修改代码方便,只要调用的函数名和参数以及返回值没有被修改,包含动态库的程序不需要重新编译

动态库在内存中只会驻留一份,多个进程使用相同动态库使用的是动态库的副本,与静态库相比节约了内存空间

缺点:

需要带.dll文件,增加了程序的依赖

运行期间需要加载dll,降低了程序运行速度

总结:

静态库:牺牲了空间效率,换取了时间效率

动态库:牺牲了时间效率,换取了空间效率

使用哪种库需要看具体需求,没有好坏之分

05-20 07:18