将QT界面程序封装成动态库DLL
本文最后更新于:2022年5月29日 上午
本文记录如何将qt界面程序封装为动态链接库DLL的方法。
前言
在开发大型项目的时候,有时候会经常使用一些通用的界面框架,把这些界面框架封装成动态库,会使得程序变得更加方便扩展,本文记录如何将qt界面程序封装为动态链接库DLL的方法。
系统环境:
- Windows 10
- Qt5.9.3
方法/步骤
1、在QtCreator创建一个C++库
如下图。我们要创建的是动态库,windows平台最终生成的是dll文件,而linux下则是so文件。
2、选择编译器以及相关的模块
编译器根据自己项目需求选择即可。
模块选择了widget和core两个,对于一般的界面,这两个就足够了。然后我们还是点下一步,如下图,直到项目创建完毕。
3、目录结构
下图是创建完工程后的目录结构
这里lcdclock.h
主要是有这个共享库的宏声明,如下图。
4、添加UI界面
鼠标右键点击左边目录结构的项目名称,选择添加ui界面。如下图。
新创建的界面类文件如下图所示,ui界面文件已经成功创建。
5、修改项目文件
打开头文件
lcdclock.h
,之前的那个共享库的宏”LCDCLOCKSHARED_EXPORT
“没有了,lcdclock_global.h
头文件也没有了,所以这里我们需要添加上才行的。直接把lcdclock_global.h
的内容复制过来即可,如下图。修改一下项目文件LCDClock.pro。如下图,这里就出现了重复文件包含,这是由于刚才生成文件的时候QtCreator没有判重导致的。在pro文件把重复包含的部分删除即可。
6、设计UI界面
这里使用LCD设计一个简单的计时器为例。
7、编译生成动态库文件
选择Release进行编译,目标文件就在项目的编译目录下。
可以在编译目录下生成了dll可lib文件。
测试使用界面动态链接库
1、新建测试项目
新建另一个项目,这里创建的是widget app项目,按照普通流程进行创建即可。
2、添加库文件和头文件
把上面项目中生成的库文件LCDClock.dll、LCDClock.lib
和头文件lcdlock.h
复制到新建的测试工程目录下。如下图。
添加上面项目中的库文件。
添加完成后,pro文件自动生成链接依赖。
添加头文件
lcdclock.h
。修改
lcdclock.h
3、运行
在main.cpp中定义一个界面类对象,编译运行,结果如下,出现了上面创建的界面。