首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MSVC需要一个导入库(.lib)作为一个.dll,而MinGW却不需要?

为什么MSVC需要一个导入库(.lib)作为一个.dll,而MinGW却不需要?
EN

Stack Overflow用户
提问于 2016-02-15 07:27:22
回答 1查看 465关注 0票数 0

我有点困惑,为什么我使用的第三方.dll附带一个标记为“导入库”的.lib文件。当我运行程序时,我只需将.dll放在与可执行文件相同的目录中,它就能工作了。我在用MinGW。

如果我甚至不需要.lib导入库,那么有人能解释为什么.lib会附带它吗?我将如何使用它,如果我确实在MinGW中使用它,我应该把它放在哪里呢?

我读了一遍,看起来MinGW不需要.lib文件(我使用的是什么),而是MSVC所需要的。为什么?

如果我想在包含可执行文件的目录之外的目录中放置一个.dll,我可以在.pro文件中放一行来指向它吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 08:15:00

根据http://www.mingw.org/wiki/sampleDLL,MinGW可以从相应的.h文件和DLL本身猜出包含在.lib中的信息(DLL名称、导出条目的名称和ABI)。

根据http://www.mingw.org/wiki/CreateImportLibraries的说法,这“适用于所有用MinGW创建的all,也适用于其他一些all”。

在无法正确猜测的情况下,仍然需要提供一个.lib文件。后一个链接有关于如何在没有原始链接的情况下手工生成一个的说明。

前一个链接引用ld文档以获得更深入的描述。具体来说,它位于ld和WIN32 (cygwin/mingw)节点“直接链接到dll”部分。除其他外,它还概述了需要.lib的情况:

  • 直到最近,直接链接还不适用于导出的数据条目。
  • 如果.lib包含纯静态对象(例如cygwinX.dll)
  • 如果导出的条目不符合损坏规则(例如,Win32库)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35403666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档