动态库、静态库区别及动态库隐式调用和显式调用区别

Windows

静态库:函数和数据被编译进一个二进制文件(.lib)(一个或多个obj文件打包),在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.exe)。

动态库:使用动态库时,往往提供两个文件:引入库(后缀也为.lib)、动态链接库(.DLL)。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不可复制到可执行文件中,在运行时,再去加载DLL,访问DLL中导出的函数。

隐式调用:在编译/链接阶段完成,由编译系统根据动态库的头文件和库文件进行编译和链接,即需要将引入库加入到应用程序的工程中,从而确定待调用的的函数原型和地址。

显示调用:利用API函数实现加载和卸载DLL,获取调用函数地址获取错误信息等功能。


Linux

静态库:与Windows下的静态库类似,后缀名为.a。

动态库:与Windows下动态库类似,没有引入库,后缀名为.so。

隐式调用:编译可执行程序时需要指定库文件的搜索路径。

显式调用:显式调用编译可执行程序时不用加上动态库的搜索路径(因为已经在主函数中包含了库文件的路径),但是需要增加几个系统调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天不打滑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值