加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 为什么在链接.lib后会出现丢失的dll错误?

发布时间:2020-12-14 03:52:08 所属栏目:Windows 来源:网络整理
导读:我从1999年开始研究这个 Windows程序.我无法在Visual Studio中构建它,因为它一直给我链接器关于缺少符号的错误.然后我的同事告诉我尝试从原始项目中获取.lib文件,并尝试将它们指定为其他链接依赖项.我做到了,程序链接得很好.当我试图运行它时,它抱怨丢失了dl
我从1999年开始研究这个 Windows程序.我无法在Visual Studio中构建它,因为它一直给我链接器关于缺少符号的错误.然后我的同事告诉我尝试从原始项目中获取.lib文件,并尝试将它们指定为其他链接依赖项.我做到了,程序链接得很好.当我试图运行它时,它抱怨丢失了dll文件.所以我发现在一些旧计算机上运行的Windows程序的现有副本,复制了dll文件,我的构建开始工作!这是我生命中最快乐的一天,但我不太清楚发生了什么.

任何人都可以简单地解释一下Windows中的lib文件以及它们与dll的关系吗?

解决方法

Windows上有.LIB文件的两种用法. Ken提到了其中一个,这是用于静态链接,但还有另一个用途,称为导入库,这就是你在这里所拥有的.如果您自己构建.DLL,则可以选择为其生成导入库.这样做的结果是您可以像对常规静态库一样链接.LIB文件,但.LIB实际上只包含用于从DLL加载入口点的样板代码.

这很有用的原因是您可能需要将代码分发为dll(例如,您可以独立于主应用程序更新它,或者将dll作为插件提供),但它使得链接更容易,因为.LIB处理LoadLibrary()和GetProcAddress()调用,以便您不必这样做.它还可以从dll加载类定义,而您自己无法使用GetProcAddress().

有关MSDN的更多信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读