QT共享库与使用
之前因为一些原因,需要将一些widget派生类封装成dll,给其它项目使用。研究了一下,首先,该widget派生类需要与使用类尽量没有关联。(当明有一个共用类,保存各种全局变量,里面有一个变量,与语言选择相关的,共享类也包含了该头文件,可是并没有获取到全局变量的值)
一、新建工程
1. 新建Library\C++工程
2.选择共享库,设定路径
3.选择对应的模块,也可以在pro里面增加
二、工程介绍
1.本工程没有main函数,可以归类为库。
2.pro文件介绍
需要debug版本的,手动增加
1 | CONFIG+=debug_and_release |
3.*_global.h介绍
下图1为_global.h的内容,下图2为实际Q_DECL_EXPORT和Q_DECL_IMPORT**的宏定义
4.主类或函数
定义前加上PUBLICSHARED_EXPORT即可,然后做自己想做的控件。
1 | PUBLICSHARED_EXPORT int max(int x,int y); //尽量不要使用这些c++或者qt库中带有的函数名,万不得已经在使用前加:表明命名空间 |
5.编译完成
在windows平台下,会成生一个.a文件和一个.dll(我使用的是Mingw5.5.1,MSVC会生成.lib和.dll)
三、库的使用
1.新建一个Application项目
右击工程,添加库,选择内部库,在库文件中选择.a或者.lib。看图说话- -
2. pro文件会发生变化
INCLUDEPATH表示头文件的路径
DEPENDPATH表示编译时依赖文件的路径
最好把 .h *_global.h .a .dll 放到与该工程下(该方法发布的时候需要把dll一起发布)
3.使用
包含.h头文件即可以正常使用函数或者类。
4.注意
有一个全局变量Language表示当前界面显示的语言,由程序开启后第一时间读取配置文件,供全局使用。使用了上面的方法,生成共享库的时候在头文件也包含了该类。结果在使用的时候经调试发现,两者的Language为两个互不关联的变量。即数据不共享,通过信号槽或者函数调用可以达到共享。
本文标题:QT共享库与使用
文章作者:whppmy
发布时间:2019-01-21
最后更新:2019-01-21
原始链接:http://bugnull.com/QT/qt共享库与使用/
版权声明:个人记录,没有获取同意时,禁止转载!!