【问题标题】:Qt shared library in windows, not generating .lib fileWindows中的Qt共享库,不生成.lib文件
【发布时间】:2015-02-17 12:50:52
【问题描述】:

我有一个简单的类(Qt 示例中的模拟时钟),我希望将其作为测试编译到共享库中。所以我最终想要的是有一个 .dll 文件和一个 .lib 文件。

我所做的只是创建一个新项目,添加模拟时钟头和源文件,然后在 pro 文件中配置TEMPLATE = lib

但这只会创建一个 .dll 文件,而我在 docs 上找到的文章并不是很有帮助。

有谁知道我该如何解决这个问题,并最终得到 dlllib 文件?

编辑 1

这样做之后

#if defined(TEST)
#define AnalogClockPlug Q_DECL_EXPORT
#else
#define AnalogClockPlug Q_DECL_IMPORT
#endif

然后简单地在我的主类前面添加 AnalogClockPlug 并在我的 pro 文件中定义 TEST,qt 生成了一个 lib 文件。

但我不确定我完全理解为什么,或者即使它是正确的。

【问题讨论】:

    标签: c++ qt shared-libraries qt5


    【解决方案1】:

    Q_DECL_EXPORT 与 __declspec(dllexport) pragma 相同(在 Windows 下)。它使您的类的所有方法都转到 dll 'exports' 表(dll 二进制文件中的特殊部分)。

    Lib 实用程序只是读取 dll 导出,并生成所谓的“导入库”——它不像通常的静态库,包含实际代码,而只是一堆说明“这样的过程名称”的记录在“这样的 dll 名称”中找到。

    如果你没有那个 pragma,你的 dll 导出表是空的,并且 lib 实用程序拒绝输出空的 lib 文件。就是这样。

    【讨论】:

      【解决方案2】:

      要制作静态库,您还需要添加

      CONFIG+= staticlib
      

      到 .pro 文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        相关资源
        最近更新 更多