QT总结第4篇:.lib和.dll文件的区别

来源:互联网 发布:关于网络宣传部的介绍 编辑:程序博客网 时间:2024/04/29 20:09

    上一篇介绍了如何在QT中添加.lib和.dll文件,这一篇简单的介绍下.lib和.dll文件的区别。


1)静态链接库:

简称静态库,也就是.lib文件。里面包含了所有函数的实现代码还有其他执行代码等。在连接的过程中,所有的代码都会嵌入到可执行代码中,导致可执行代码过大,但是可执行代码运行的时候, 不再需要.lib文件。

2)动态链接库:

简称动态库,也就是.dll文件。.dll文件在代码编译连接的时候,并不会导入到可执行代码中!而是可执行代码在真正运行的时候,如果用到了.dll文件中的函数,则临时到.dll文件中去寻找,这样可以有效防止可执行代码过大,也大大增加了灵活性。那么,这里有一个问题,可执行代码怎么知道函数在.dll文件中的哪里呢?这里,又提到一个概念,.lib。此lib非彼lib,这个.lib文件可不是之前说的静态链接库,在这里,他被叫做动态链接库的导入库(简称导入库)!这个.lib文件里面,放入的是索引信息,在连接的时候,包含进可执行文件中,当可执行文件需要去执行.dll文件的函数时,会首先去导入库中找到该函数对应的内存地址,然后根据这个索引去.dll中找到具体实现。


总结一下:

1)一般,如果只有.lib,则该.lib是静态链接库,里面包含了所有代码的实现等。如果有.dll,则一定有.lib。该.lib为导入库,存放的是调用的函数的内存地址。

2)对于动态库而言,可执行代码中仅仅包含了索引信息,当用到这些函数的时候,再根据索引信息,去.dll文件中找到函数的具体实现


原创粉丝点击