windows LIB文件和DLL文件的作用和关系

windows LIB文件和DLL文件的作用和关系

LIB后缀的文件有两种:
第一种: 静态联结版本;
第二种:动态联结版本的import 函数库;

DLL后缀文件:程序运行时的动态库;

以Windows的USER32模块举例:(USER32模块协助自己的程序和系统进行消息传递等功能)
如果自己写的程序采用静态编译的方式生成执行程序,则使用静态库USER32.LIB.此时是第一种情况.在生成可执行文件时,编译器会把程序用到的USER32模块中的函数从静态库USER32.LIB中拷贝到自己编写的程序中,整合成一个完成的程序,所以编译出来的程序会比较大.但好处是不再依赖外部的USER32模块.
即编译时使用,运行时不使用

如果不想自己写的程序体积太大.或者说自己有多个程序,每个程序都会用到USER32模块.于是便可以采用动态链接的方式来编译自己的程序,将共用的模块独立出来编译成一个DLL,供多个程序共同使用.
现在就有一个问题,自己写的程序怎么关联到这个DLL.即程序在运行到调用USER32模块函数的时候怎么去DLL里面找到?
这里就又用到USER32.LIB,但是这个LIB和上面说到的静态库不是同一个.虽然都是后缀LIB,但是这里的LIB并没有USER32模块的具体实现功能.里面的东西可以理解为USER32模块中各个函数在USER32.DLL中的地址.编译程序时将这些地址拷贝到你的程序中,当运行调用时再去DLL中找,从而实现了动态联结.
即编译时使用LIB来写入地址,运行时在DLL中找到函数调用

所以在使用第三方动态库的时候,要使用编译器或者代码中指明使用的LIB.这个LIB就相当于DLL的地图,系统在运行程序的时候知道去哪个DLL中找函数,函数在哪个位置.

总结:
LIB这个文件,只在程序编译的时候使用,不论是静态还是动态编译.DLL这个文件则在程序运行时使用.

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值