码迷,mamicode.com
首页 > 其他好文 > 详细

vs2010下lib和dll文件的使用

时间:2015-05-20 18:00:14      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

 

一、lib文件的简介

.lib是一种文件后缀,是Windows操作系统的库文件,有静态lib和动态lib之分:

 

1)、静态lib

文件:将导出的文件的声明和实现都放在lib文件中,此时lib

文件主要包含函数的实现部分(cpp文件)

,例如类的函数定义。使用时只需配

合相关的头文件,编译后程序将lib

文件中的代码嵌入到宿主程序中,也就是最后的exe文件中,此时移除lib

文件,程序可以正常运行,即编译后就不需要lib文件的支持了。

 

2)、动态lib文件:相当于是一个h头文件,用于支持相应的dll

文件的运行。里面存储的是dll文件中各个导出函数的地址,达到链接主程序与dll文件的目的。

 

 

dll文件的使用

dll文件的使用分为动态加载和静态加载,两种方法优势都很明显:

动态加载:
在程序中用程序显示加载dll文件,通过函数GetProcAddress找到对应的函数的地址,利用函数指针直接访问对应的函数。该方法不需要lib文件的支持,也不需要包含对应的头文件,但是需要显式的加载dll文件,这也就意味着dll文件在编译的时候就已经被链接,且使用不是很方便,函数指针容易出错。
静态加载
:只加载对应的lib文件(是一些函数链接的信息,一般比较小),不加载dll文件,编译的时候只需要lib文件的支持,在运行的时候才调用dll文件的函数。此处lib文件和dll文件都放在工程目录下,且需要包含对应的头文件。 Windows中dll、exe都是可执行的文件,但是exe可以直接被操作系统调用执行,而dll文件不能,因此当有进程调用dll文件中函数时,直接即可运行。

 

 

 

 

lib文件与dll

 

 

(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

文件必须随应用程序一起发行,否则

应用程序将会产生错误。

 

vs2010下lib和dll文件的使用

标签:

原文地址:http://www.cnblogs.com/T-C-hong-dou/p/4517700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!