我有点困惑,为什么我使用的第三方.dll附带一个标记为“导入库”的.lib文件。当我运行程序时,我只需将.dll放在与可执行文件相同的目录中,它就能工作了。我在用MinGW。
如果我甚至不需要.lib导入库,那么有人能解释为什么.lib会附带它吗?我将如何使用它,如果我确实在MinGW中使用它,我应该把它放在哪里呢?
我读了一遍,看起来MinGW不需要.lib文件(我使用的是什么),而是MSVC所需要的。为什么?
如果我想在包含可执行文件的目录之外的目录中放置一个.dll,我可以在.pro文件中放一行来指向它吗?
谢谢。
发布于 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)https://stackoverflow.com/questions/35403666
复制相似问题