gpt4 book ai didi

c++ - Windows 中的 Qt 共享库,不生成 .lib 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:38 24 4
gpt4 key购买 nike

我有一个简单的类(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 文件。

但我不确定我是否理解确切的原因,或者即使它是正确的。

最佳答案

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

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

如果您没有该编译指示,则您的 dll 导出表为空,并且 lib 实用程序拒绝输出空的 lib 文件。就这样。

关于c++ - Windows 中的 Qt 共享库,不生成 .lib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28561934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com