迷茫,LIB库和DLL库有什么区别??

zhangjie1234 2003-12-30 12:37:45
正在学API函数,看到函数都是包装在kernel32.dll ,user32.dll 或gdi.dll等dll
文件里,我们从这里可以调用函数,同是我们使用ADO对象的时候也是从ADO2.6.dll
文件里调用,我想知道如何哪些dll文件是可以调用函数,哪些是生成对象使用的。
同时,LIB这个文件是起什么作用的,和dll文件有什么区别???
...全文
53 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
once168 2004-01-01
  • 打赏
  • 举报
回复
DLL与LIB的区别:
1.DLL是一个完整程序,其已经经过链接,即不存在同名引用,且有导出表,与导入表
lib是一个代码集(也叫函数集)他没有链接,所以lib有冗余,当两个lib相链接时地址会重新建立,当然还有其它相关的不同,用lib.exe就知道了
2.在生成dll时,经常会生成一个.lib(导入与导出),这个lib实际上不是真正的函数集,其每一个导出导入函数都是跳转指令,直接跳转到DLL中的位置,这个目的是外面的程序调用dll时自动跳转
3.实际上最常用的lib是由lib.exe把*.obj生成的lib,这才是真正的库,他是代码集,可完全代替目标代码

kunyi 2003-12-31
  • 打赏
  • 举报
回复
lib必须被链接到主程序中,主程序进入内存,lib也同时进入内存。而dll则是需要用到它的时候由操作系统调入内存。从复用性的角度来看,lib因为必须参加编译,所以复用性就不如DLL啦
yjgx007 2003-12-31
  • 打赏
  • 举报
回复
dll---com组件dll
| |
| |__常规dll--win32 dll
| |___mfc dll
| |___extended dll (所有dll不参与编译)
lib
|_____与obj文件类似的未编译过符号文件,与obj文件区别是声明了转入转出函数
zhangjie1234 2003-12-31
  • 打赏
  • 举报
回复
如何区分,哪些dll库要定义成对象才可以使用,
哪些dll库要申明API函数才能使用咧
aspvbjava 2003-12-31
  • 打赏
  • 举报
回复
接问一下,ocx呢?
zhucde 2003-12-30
  • 打赏
  • 举报
回复
dll是个编译好的程序,
调用时可以直接调用其中的函数,
不参加工程的编译.

而lib应该说是一个程序集,
只是把一些相应的函数总结在一起,
如果调用lib中的函数,
在工程编译时,这些调用的函数都将参加编译.
baghatur 2003-12-30
  • 打赏
  • 举报
回复
呵呵,从内存管理的角度来看吧,lib必须被链接到主程序中,主程序进入内存,lib也同时进入内存。而dll则是需要用到它的时候由操作系统调入内存。从复用性的角度来看,lib因为必须参加编译,所以复用性就不如DLL啦
FAICHEN 2003-12-30
  • 打赏
  • 举报
回复
编译时调用和运行时调用的区别
zhucde 2003-12-30
  • 打赏
  • 举报
回复
可以这样说
joinrry 2003-12-30
  • 打赏
  • 举报
回复
可以这样说,DLL是实现,LIB是定义

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧