Windows下动态库和静态库区别:
动态链接库(DLL)
动态链接库和静态链接库:
动态链接库一般不能直接执行,而且他们一般也不接收消息。
他们是包含许多函数的独立文件,这些函数可以被应用程序和其他DLL调用以完成特定的工作。
一个动态链接库只有在另一个模块调用其所包含的函数时才启动。
“静态链接”一般是在程序开发过程中发生的,用于把一些链接在一起创建一个Windows可执行文件。
这些文件包括各种各样的对象模块(.OBJ),运行时库文件(.LIB),通常还有编译的资源文件(.RES)
与其相反,动态链接则发生在程序运行时。
静态库:函数和数据被编译进一个二进制文件,扩展名为(.lib)
在使用静态库的情况下,在编译链接可执行文件时:
链接器从静态库中复制这些函数和数据,并把他们和应用程序的其他模块组合起来创建最终的可执行文件(.exe)
当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。
“动态链接”是指Windows的链接过程,在这个过程中它把模块中的函数与在库模块中的实际函数链接在一起。
动态库:在使用动态库时,往往提供两个文件:一个导入库(.lib,非必须)和一个(.dll)文件。
导入库和静态库本质上的区别:
静态库本身就包含了实际执行代码和地址符号等数据。
而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号等,确保程序找到对应函数的一些基本地址信息。
Linux下的动态库生成名称为.os的文件,调用的方法基本相同。