.lib文件详解
来源:互联网 发布:淘宝好店 知乎 编辑:程序博客网 时间:2024/06/05 19:27
.lib是一种文件名后缀
该文件为Windows操作系统中的库文件,相当于Linux中的.a或.o、.so文件
lib有静态lib和动态lib之分。
使用
lib文件通过编译才可以使用编译分静态与动态之分。
静态编译
静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序
动态编译
动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持
内容
一个lib文件是obj文件的集合。当然,其中还夹杂着其他一些辅助信息,目的是为了让编译器能够准确找到对应的obj文件。我们可以通过tlib.exe(在tc2.0下的根目录)来对lib文件进行操作,你可以把自己生成的obj文件通过tlib命令加入到一个lib文件中,也可以把lib文件内的obj文件进行删除操作,还可以把内部的obj文件给提取出来。明白了lib文件的大致结构以及对它的具体操作,在学习C语言的过程中,就会又多了一个切入点对C语言具体实现进行研究。
与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文件必须随应用程序一起发行,否则应用程序将会产生错误。
加载方法
直接加入
在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件即可。
设置
打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件。
- .lib文件详解
- lib文件和dll文件详解
- lib文件
- LIB文件
- 详解C语言中的lib文件以及tlib命令
- 详解生成静态链接库lib文件和调用
- makefile 文件中 `cat /lib/sysliblist` 意思详解
- Linux根文件之lib库制作详解
- Qt lib没有.lib文件?
- Struts2 Lib 包详解
- struts2 lib 包详解
- 生成lib和使用lib方法详解
- 如何生成LIB文件
- 动态加载lib文件
- vs2008生成lib文件
- lib文件学习摘记
- 查看lib库文件
- linux中的.lib文件
- Spring Security 中Message乱码问题
- Uboot 源码分析----代码整体结构分析
- struts2+jquery+ajax+json
- Mahout-Kmeans MR
- 利用synergy让win7 和unbuntu公用一套键盘鼠标
- .lib文件详解
- SEO学习(七)——预估流量及价值
- win7下64位系统memcache/memcached安装教程
- HDOJ/HDU 2037 今年暑假不AC ...... sth. like interval scheduling use 贪心..so easy...
- EAS子系统树
- 《Windows内核编程》---系统时间和定时器
- js设置cookie JS操作cookies方法 写入读取与删除
- jQuery学习笔记(1)
- android.os.NetworkOnMainThreadException