【QT】Qt 给已经开发好的程序快速封装成动态库
2023-09-11 14:16:59 时间
前两篇博客:
1、不带ui界面的动态库的生成与调用
2、带ui界面的动态库的生成与调用
如果是已经开发好的工程或项目,想要封装成动态库,如何更加快速便捷:
例如:QT项目工程
如何给该项目工程封装快速封装成动态库呢?
1、修改配置文件
#TEMPLATE = app
TEMPLATE = lib
DEFINES += RECDATA_LIBRARY
2、新建一个头文件recdata_global.h
,并添加如下代码
#include <QtCore/qglobal.h>
#if defined(RECDATA_LIBRARY)
# define RECDATASHARED_EXPORT Q_DECL_EXPORT
#else
# define RECDATASHARED_EXPORT Q_DECL_IMPORT
#endif
3、引入头文件,修改导出类定义
#include "recdata_global.h"
class RECDATASHARED_EXPORT RecData : public QWidget
#include "recdata_global.h"
class RECDATASHARED_EXPORT showData : public QWidget
4、重新构建、运行
5、若是 MinGW32
编译器,在编译之后会在文件夹下找到 ***.dll
和 ***.a
文件;若是 MSVC
编译器,则应该是 ***.dll
和 ***.lib
。
6、调用
在使用该库的程序中,新建一个 include
文件夹 和 一个lib
文件夹,将 导出类的头文件
复制进include
文件夹中,将编译生成的***.lib
文件复制到lib
文件夹中,然后在程序中引入该头文件即可。
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lRecData
在编译之后,将不同模式编译下的dll
文件放入程序编译后的文件夹中,才能正常运行程序。
相关文章
- Qt5的插件机制(1)--Qt 框架中的插件载入机制概述
- QT中操作Txt文件(Qt中QString与QByteArray互相转化方法)
- Qt中子线程调用定时器实例
- QT-多线程重要概念及与界面之间交互总结(混淆点分析:c#中可以在子线程中创建ui控件,qt中不能在子线程中创建ui控件)
- QT的系统总结(非常全面)
- 【QT】Qt::UserRole的作用
- 【QT】Qt获取前几天/后几天的时间
- 【QT】Qt 使用MSVC2017找不到编译器的解决办法
- Qt安卓开发经验011-020
- Qt编写安防视频监控系统48-视频参数
- Qt音视频开发40-人脸识别离线版
- Qt编写的项目作品31-PDF阅读器(雨田哥作品)
- Qt编写安防视频监控系统6-面板开关
- QT in VS 多语言实现(中英文切换,每个步骤都有截图,只有UTF8才能让Qt语言家正确读取。先qApp->removeTranslator,然后installTranslator,每个类都要写上槽函数RetranslateUI)
- Qt之输出控制
- Qt 学习之路 2
- Qt -------- 容器类
- 基于Visual Studio IDE+Qt开发环境搭建(详细介绍搭建过程)
- Qt 有多少人折腾-qt for s60终于安装成功
- [转]QT QDateTime类、QTimer类