【发布时间】:2019-10-01 01:40:39
【问题描述】:
通常当我们链接到一个 dll 时,我们也必须使用 .lib 以便链接器可以判断它是动态链接。 但是在 Qt Creator 中,我们可以在没有它的情况下做到这一点。
我按照youtube上的说明,简单的流程如下:
- 准备了一个TestMessagePack.dll,由GCC编译;
- 将dll复制到exe所在的debug文件夹中。
- 添加下面的代码,它还指示包含文件的位置。
INCLUDEPATH += "C:\Users\***\Desktop\Brand New\CMakeStuff\include\qmsgpack" LIBS += "C:\Users\***\Desktop\Brand New\CMakeStuff\bin\TestMessagePack.dll"
- 构建并运行。
如果没有第 2 步,链接器将失败。 很明显,Qt Creator 可以链接到没有 .lib 的 dll。 但是没有.lib文件,链接器怎么知道呢?
我要知道里面的原理
【问题讨论】:
-
第 2 步不是必需的。所需要的只是告诉链接器这些函数存在于某处,然后您通过指定 lib 文件来做到这一点。您遵循的步骤给出了在构建过程中使用 DLL 的错误想法(可能是无意的),但事实并非如此。也许 Qt 系统会尝试从您给它的 dll 名称中找到“lib”文件,但绝不需要实际的 DLL 文件来构建应用程序。要运行您的应用程序,那么DLL就变得很重要了。
标签: c++ qt dll compilation linker