静态库lib与动态引入库lib区别
原文:https://www.cnblogs.com/lidabo/archive/2012/08/14/2638763.html
在VC编程中常常碰到的.lib文件有一个需要注意的地方是:
静态库——函数和数据被编译进一个二进制文件(扩展名问.lib)。在使用静态库的情况下,在编译连接可执行文件时,连接器从库中复制这些函数和数据并把他们和应用程序的其他模块组合起来创建最终的可执行文件(.exe)文件,当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。
动态库——在使用动态库时,往往提供两个文件:一个引入库(.lib)文件和一个DLL(.dll)文件。虽然引入库的后缀名也是“.lib”,但是,动态库的引入库文件和静态库文件有着本质的区别。对一个dll来说,器引入库文件(.lib)包含该DLL导出的函数和变量的符号名,而.dll文件包含该DLL实际的函数和数据,在使用动态库的情况下,在编译连接和执行文件时,只需要在连接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中,直到可执行程序运行时,才去加载所需要的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数。这时,在发布产品时,除了发布可执行文件以外,同时还要发布该程序将要调用的动态连接库。
从这个文章来看:
静态库lib文件包含所有函数内容,也就意味着文件大小比较大,通常大小都上M,这是直观能发现的。
动态库引入库lib文件,虽然名字也叫.lib文件,但是里面仅包含DLL导出函数和变量符号名,文件大小会小很多,通常只有几十K。
所以从这点来推理的话, FT最新发布的驱动DLL & .lib分别对应动态库和静态库,并没有提供动态引入库文件。