创建自定义 QT 库

Posted

技术标签:

【中文标题】创建自定义 QT 库【英文标题】:Creating Custom QT Library 【发布时间】:2010-05-04 06:29:20 【问题描述】:

我使用 VS2005 创建了一个静态 Qt 库。

除了预期的文件(test.h 和 test.cpp)之外,它还创建了一个额外的文件“test_global.h”。

test_global.h

#ifndef TEST_GLOBAL_H
#define TEST_GLOBAL_H

#include <Qt/qglobal.h>

#ifdef TEST_LIB
# define TEST_EXPORT Q_DECL_EXPORT
#else
# define TEST_EXPORT Q_DECL_IMPORT
#endif

#endif // TEST_GLOBAL_H

为什么会生成这个文件,我想如何使用它?

谢谢。

【问题讨论】:

【参考方案1】:

您在库标头中将您的类(或方法)标记为导出:

class TEST_EXPORT TestClass 
    // ...
;

然后在你的库 pro 文件中添加:

DEFINES += TEST_LIB

因此,在 dll 编译期间,您的类头将具有“Q_DECL_EXPORT”宏,这是 Qt 告诉链接器“导出此类/方法”的方法,并且当您在某些应用程序中使用您的 dll 时,头将具有“Q_DECL_IMPORT”宏。

更多信息,请查看Qt documentation。

【讨论】:

1-)我需要在每个符号前面加上“TEST_EXPORT”,还是存在范围? 2-)我需要把“TEST_EXPORT”放在客户不使用的类前面吗? 广告 1。如果要导出类中的每个符号,请将 TEST_EXPORT 放在类名前面。如果您只想导出一些符号,请不要将 TEST_EXPORT 放在类的前面,而是将 TEST_EXPORT 放在每个导出的符号前面。广告 2。没有。

以上是关于创建自定义 QT 库的主要内容,如果未能解决你的问题,请参考以下文章

使用 LeanBack 支持库自定义 Android TV 界面

spring-data 存储库自定义查询

密钥库自定义路径的Gradlew问题

如何为新式体验文档库自定义 SharePoint Online 列/字段?

三方开源库自定义

微信小程序|组件库自定义加载动画