一真对windows的动态库和靜太库理解不清,请高人指点一二!谢谢

crescent1999 2004-09-13 08:47:24
比如,如果自己写dll,使用时需要动态加载(只使用dll)或靜态加载(使用lib和dll)
而如果使用regex++这些库时,它动态加载却不要lib,只要包括相应的关文件就可以了?这是为什么??
...全文
259 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wshcdr 2005-03-05
  • 打赏
  • 举报
回复
refer to

http://community.csdn.net/Expert/topic/3825/3825272.xml?temp=.8247949

里面我说明了两种链接库的做法
daylove 2004-09-21
  • 打赏
  • 举报
回复
学习一下,
headman 2004-09-20
  • 打赏
  • 举报
回复
虽然上面大家说的都对,但是有些概念这里我想说一下:

动态库:就是DLL,可以通过静态或者动态连接。如果是静态连接,需要这个Dll的连接信息,在同名lib中,这个lib会被编译到宿主的程序中,在运行中,整个DLL会被加载到宿主进程;如果是动态连接,实在程序运行中加载DLL,通过LoadLibrary加载。

静态库:就是lib,是被编译到程序空间的。很少用了。
yehuotaizi 2004-09-19
  • 打赏
  • 举报
回复
同意一二楼
shakaCY 2004-09-19
  • 打赏
  • 举报
回复
是啊!因为:
1、静态加载时需要把DLL的信息连接到程序文件之中,而lib中就是这些需要加入的连接信息;在动态加载时是使用LoadLibrary装载DLL文件,不需要连接,因此不需要lib文件
2、regex++采用了所谓“自动连接”方式,你的头文件中有语句
#pragma comment( lib,“regex.lib”),实际上就是将“regex.lib”链接上了啊!
3、楼主,结帐啦!^_^
bm1408 2004-09-15
  • 打赏
  • 举报
回复
去VCKBASE.COM上去看看!
caslwzgks 2004-09-14
  • 打赏
  • 举报
回复
regex++采用了所谓“自动连接”方式
#pragma comment( lib,'regex.lib')
wbh0360 2004-09-14
  • 打赏
  • 举报
回复
tongyi
zgy166 2004-09-13
  • 打赏
  • 举报
回复
同意一二楼
iBear 2004-09-13
  • 打赏
  • 举报
回复
动态加载,使用loadlibrary函数,这样可以对加载有所控制,比如没有相应的dll程序如何操作等等,所以插件型的程序往往是采用这种方法;但静态连接的话,如果没有dll,系统将报错,程序就退出了,你无从选择。
北极猩猩 2004-09-13
  • 打赏
  • 举报
回复
静态加载时需要把DLL的信息连接到程序文件之中,而lib中就是这些需要加入的连接信息
在动态加载时是及时使用LoadLibrary装载DLL文件,不需要连接,因此不需要lib文件

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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