动态库.lib与.dll关系、visual studio工程库路径配置浅析


背景:学习vs生成动态库一段时间以来,一直对动态库.dll 与.lib的关系,vs工程配置半知半解,直到最近有了更进一步的理解,若有错误,欢迎指正。
平台:windows


1.动态库.lib与.dll关系

我们知道,通过工程生成的动态库并不只有.dll文件,还有.lib文件。其他地方对这点的解释是.lib文件保存了函数信息以及其在dll中的位置。那么现在有一个问题,生成的.lib和.dll文件是否可以改名?

结论,.lib可以改,.dll不可以改

为什么?

因为与.lib名字相关的只有工程配置中链接器的输入,如果lib文件名字改了,只需要把工程中对应的名字也改了,其他并没有什么影响。

但为什么dll名字不能改,我没有查看过lib文件内容,但是根据之前的介绍“lib存的是dll的函数信息以及其在dll的位置”,不难推理出lib一定是保存了dll文件的名字,且程序在运行时通过dll名字来找到对应的dll,再找到所调用的函数,那么如果dll名字改了,是不是就找不到dll呢。

2.visual studio工程库路径配置

新手刚开始配置,没有经验,只能照着网上的文章来配置,但是网上的很多文章往往少说了一些内容,这就很容易导致后续产生问题。

网上的大多教程为以下三步:

  • 在 c/c++附加包含目录配置头文件路径
  • 在链接器-附加库目录 配置lib文件路径
  • 在输入-附加依赖项添加lib文件名

那么dll文件路径如何配置?

一般来讲,dll是与lib文件放在一起的,但如果只是执行上面三步,程序大概率不会运行。有人也许会疑问,我的dll与lib放在一起呀,怎么会找不到dll呢?

其实,dll文件与lib在不在一起无所谓,因为程序运行时,是在当前运行输出路径中(.exe所在路径)寻找dll文件,也就是说,配置dll路径就是

  • 把dll文件复制到当前程序运行输出路径
  • 或者把当前程序输出路径设置为dll所在路径

既然dll不能随便改名字,可能有人问我就想改怎么办?

这需要重新编译生成库文件。

以上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值