没有合适的资源?快使用搜索试试~ 我知道了~
C++动态库与静态库的比较
5星 · 超过95%的资源 需积分: 18 7 下载量 154 浏览量
2015-07-15
13:53:49
上传
评论 1
收藏 31KB DOC 举报
温馨提示
试读
2页
什么是lib文件,lib和dll的关系如何 (1)lib是编译时需要的,dll是运行时需要的。 (2)一般的动态库程序有lib文件和dll文件。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。
资源推荐
资源详情
资源评论
什么是
lib
文件, 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 和.LIB 文件必须随应用程序一起发行,否则应用程序将
会产生错误。
问题:
一直没搞清楚编译 dll 后生成的 lib 文件到底是干什么用的?如果采用静态连接,为什么老
是需要 lib 文件?而通过 loadlibrary 则不需要?如果是静态连接,是否我的 dll 程序一旦
改动而从新编译过后,就还需要从新编译调用 dll 的程序?
答案汇总:
(rivershan)
程序员在建立一个 DLL 文件时,链接程序会自动生成一个与之对应的 LIB 导入文件。该文
件包含了每一个 DLL 导出函数的符号名和可选的标识号,但是并不含有实际的代码。LIB
文件作为 DLL 的替代文件被编译到应用程序项目中。
当程序员通过静态链接方式编译生成应用程序时,应用程序中的调用函数与 LIB 文件中导
出符号相匹配,这些符号或标识号进入到生成的 EXE 文件中。LIB 文件中也包含了对应的
DLL 文件名(但不是完全的路径名),链接程序将其存储在 EXE 文件内部。当应用程序运
行过程中需要加载 DLL 文件时,Windows 根据这些信息发现并加载 DLL,然后通过符号
名或标识号实现对 DLL 函数的动态链接。所有被应用程序调用的 DLL 文件都会在应用程
序 EXE 文件加载时被加载在到内存中。可执行程序链接到一个包含 DLL 输出函数信息的
输入库文件(.LIB 文件)。操作系统在加载使用可执行程序时加载 DLL。可执行程序直接通
过函数名调用 DLL 的输出函数,调用方法和程序内部其他的函数是一样的。
(stonespace)
资源评论
- 小米智能生活2023-07-27这篇文件的内容经过仔细整理和深入研究,对于初学者和进阶者都具有一定的参考价值。
- 郑瑜伊2023-07-27作者结合实际情况,给出了使用动态库和静态库的案例,增加了文档的可读性和可信度。
- 天使的梦魇2023-07-27虽然这篇文件使用的是C语言作为例子,但是对于其他编程语言的使用同样具备普适性。
- 艾斯·歪2023-07-27这篇文件对比了C语言中动态库与静态库的使用,简明扼要,让人一目了然。
- 笨爪2023-07-27对比中,作者给出了动态库和静态库的优缺点,使读者能够明晰地选择适合自己的库类型。
qq_29840509
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 重启进行BIOS快捷方式,不需要开机按BIOS键
- 威纶通触摸屏编程软件Easy builder pro V6.09.01.556安装包(2024.04).txt
- WindowsAdminCenter
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功