2024年4月3日发(作者:)

转 dll lib exe的联系与区别

什么是lib文件,lib和dll的关系如何

转自 /s/blog_

(1)lib是编译时需要的,dll是运行时需要的。

如果要完成源代码的编译,有lib就够了。

如果也使动态连接的程序运行起来,有dll就够了。

在开发和调试阶段,当然最好都有。

(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而

dll文件是运行期才会被调用的。如果有dll文 件,那么对应的lib文件一般是一些索引信息,具体的

实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其 中。

静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序

比较大,而且失去了动态库的灵活性,在版本升级时,同 时要发布新的应用程序才行。

(3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件

包含被DLL导出的函数的名称和位置,DLL包含实际 的函数和数据,应用程序使用LIB文件链接到

所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件

中,存放的不 是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应

用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资 源。从上面的说明可以

看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。

一、开发和使用dll需注意三种文件

1、 dll头文件

它是指dll中说明输出的类或符号原型或数据结构的.h文件。当其它应用程序调用dll时,需要将

该文件包含入应用程序的源文件中。

2、 dll的引入库文件

它是dll在编译、链接成功后生成的文件。主要作用是当其它应用程序调用dll时,需要将该文件

引入应用程序。否则,dll无法引入。

3、 dll文件(.dll)

它是应用程序调用dll运行时,真正的可执行文件。dll应用在编译、链接成功后,.dll文件即存

在。开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,不必有.lib文件和dll头文件。

动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用

不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、

链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问

内存中单个 DLL 副本的内容。

动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包

含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有

被引用的函数,并将库同代码一起放到可执行文件中。

使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于

升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。

lib与dll文件最大区别在调用方面