使用动态链接为什么还需要静态库lib文件

在Windows上使用动态链接时,不光需要头文件 .dll文件 还需要一个.lib 文件。
不是动态链接吗?为什么还需要静态库.lib文件?

实际上,这个.lib文件并不是静态库,而是 导入库 文件,只是使用和静态库相同的扩展名而已。
静态库本身就包含了实际执行代码、符号表等等,所以只要头文件就可以了。
而动态链接而言,其实际的执行代码位于动态库中,需要导入库提供地址符号表等信息,确保程序找到对应函数的一些基本地址信息。

可以看到两个.lib文件大小差距很大。


参考:VS2013生成、使用dll,lib文件

原文地址:https://www.cnblogs.com/xiyu714/p/11891955.html