静态链接库与动态链接库的差别?

[表1:静态链接库与动态链接库差别]

  1. 静态库本身就包含了代码,地址符号表等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息;
  2. 静态链接库是一个或多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive即合并到一起。当我们应用工程在使用静态链接库的时候,静态链接库要参与编译,在生成执行文件之前的链接过程中,将静态链接库的全部指令直接链接如可执行文件中,故而,在可执行文件生成以后,静态链接库.lib可以弃之不用;
  3. 动态链接库是作为共享函数库的可执行文件,动态链接库提供了一种方法,是进程可以调用不属于其可执行代码的函数。dll 还有助于共享数据和资源。多个应用程序可同时访问内存中单个dll副本的内容。
  4. 使用动态链接库代替静态链接库优点:dll 节省内存,减少交换操作,节省磁盘空间,更易于升级(不需要重链接和重编译),提供售后支持,提供MFC库类的机制,支持多语言支持。
  5. 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,lib中的指令都全部被直接包含在最终生成的exe文件中了。但是若使用dll动态链接库,该dll不必被包含在最终的exe文件中,执行文件执行时可以动态地引用和卸载这个与exe独立的dll文件。
  6. 另一个区别是,静态链接库不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
  7. 静态链接库动态链接库使用的区别在于它允许可执行模块(dll或exe文件)仅包含在运行时定位dll函数的可执行代码的所需信息。静态链接库的使用中,连接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。

猜你喜欢

转载自blog.csdn.net/qq_37791134/article/details/81515285
今日推荐