在Windows上使用动态链接时,不光需要头文件 .dll文件 还需要一个.lib 文件。 不是动态链接吗?为什么还需要静态库.lib文件?
.dll
.lib
实际上,这个.lib文件并不是静态库,而是 导入库 文件,只是使用和静态库相同的扩展名而已。 静态库本身就包含了实际执行代码、符号表等等,所以只要头文件就可以了。 而动态链接而言,其实际的执行代码位于动态库中,需要导入库提供地址符号表等信息,确保程序找到对应函数的一些基本地址信息。
可以看到两个.lib文件大小差距很大。
参考:VS2013生成、使用dll,lib文件