linux qt 共享库 嵌套依赖,QT共享库与使用

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

之前因为一些原因,需要将一些widget派生类封装成dll,给其它项目使用。研究了一下,首先,该widget派生类需要与使用类尽量没有关联。(当明有一个共用类,保存各种全局变量,里面有一个变量,与语言选择相关的,共享类也包含了该头文档,可是并没有获取到全局变量的值)

一、新建工程

1. 新建LibraryC++工程

9a5ba841d7b335b249c2b343b3780cfc.png

2.选择共享库,设定路径

47164eaff106be7b98057cf54b529768.png

3.选择对应的模块,也可以在pro里面增加

bc413ee9a6dbac8f18e073bd4025ddc8.png

二、工程介绍

1.本工程没有main函数,可以归类为库。

2.pro文档介绍

​ 需要debug版本的,手动增加1

2

3

4

5CONFIG+=debug_and_release

CONFIG(debug,debug|release){

unix:TARGET=$$join(TARGET,,,_debug)

else:TARGET=$$join(TARGET,,,d)

}

c05db160557f0cdbd8a40a5ec3beb945.png

3.*_global.h介绍

​ 下图1为_global.h的内容,下图2为实际Q_DECL_EXPORT和Q_DECL_IMPORT**的宏定义

cbbcc48e09573379e8b9d132ffd84c59.png

7f5d6b0ccec66df47c3e0f121ae5ee5c.png

4.主类或函数

​ 定义前加上PUBLICSHARED_EXPORT即可,然后做自己想做的控件。1

2

3

4

5

6

7PUBLICSHARED_EXPORT int (int x,int y);

类定义

class Public

{

public:

Public();

};

5.编译完成

​ 在windows平台下,会成生一个.a文档和一个.dll(我使用的是Mingw5.5.1,MSVC会生成.lib和.dll)

三、库的使用

1.新建一个Application项目

​ 右击工程,添加库,选择内部库,在库文档中选择.a或者.lib。看图说话- -

b62e9c4b51475dad55a133a045c7dc91.png

272501f1a8395962ce076fa17bc3558c.png

f40cb77920115e75ca142cc101032bd3.png

2. pro文档会发生变化

​ INCLUDEPATH表示头文档的路径

​ DEPENDPATH表示编译时依赖文档的路径

​ 最好把 .h *_global.h .a .dll 放到与该工程下(该方法发布的时候需要把dll一起发布)

6103112f787c235bb460d5b026608fb8.png

3.使用

​ 包含.h头文档即可以正常使用函数或者类。

4.注意

​ 有一个全局变量Language表示当前接口显示的语言,由进程开启后第一时间读取配置文档,供全局使用。使用了上面的方法,生成共享库的时候在头文档也包含了该类。结果在使用的时候经调试发现,两者的Language为两个互不关联的变量。即数据不共享,通过信号槽或者函数调用可以达到共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值