为什么当MinGW没有时,MSVC需要一个.dll的导入库(.lib)?

时间:2016-02-15 07:27:22

标签: c++ qt

我有点困惑为什么第三方。我将使用带有标记为"导入库的.lib文件。"当我运行程序时,我只是将.dll放在与可执行文件相同的目录中并且它可以工作。我正在使用MinGW。

有人可以解释为什么.dll附带.lib导入库,如果我不需要它吗?我怎么会使用它,如果我和MinGW一起使用它,我应该把它放在哪里?

我读了它,看起来MinGW不需要.lib文件(我正在使用),MSVC需要 。这是为什么?

P.S。如果我想将.dll放在包含可执行文件的目录以外的目录中,我可以在.pro文件中添加一行来指向它吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

根据http://www.mingw.org/wiki/CreateImportLibraries,这适用于“使用MinGW创建的所有DLL以及其他一些”。

如果无法正确猜测,您仍需提供.lib文件。如果您没有原始链接,后一个链接有关于如何手动生成一个的说明。

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

  • 直到最近,直接链接对导出的数据条目不起作用
  • 如果.lib包含纯静态对象(例如cygwinX.dll
  • 如果导出的条目不符合修改规则(例如Win32库)
相关问题