Qt 动态库的编译和使用

一.概述

~~ 最近项目需要,需要将部分自己写的控件组件化,要求要将部分自己写的控件封装成动态库。于是,网上学习了一下,幸不辱命,成功生成了动态库,并且可以被调用。下图的仪表是我想封装成库的类:
在这里插入图片描述
~~ win 下动态链接库的后缀为 xxx.dll, 静态库为 libxxx.a

二.动态库生成

1.新建一个C++库工程
在这里插入图片描述
2.类型选择 共享库
在这里插入图片描述
3.根据需要勾选要选择的模块,由于我要用到QWidget,所以将“QtWidgets”选项选上。在这里插入图片描述
4.一直下一步,直到完成,此时,项目文件是这样的
在这里插入图片描述
mydial.h

#ifndef MYDIAL_H
#define MYDIAL_H

#include "mydial_global.h"

class MYDIALSHARED_EXPORT MyDial
{

public:
    MyDial();
};

#endif // MYDIAL_H

mydial.cpp

#include "mydial.h"


MyDial::MyDial()
{
}

mydial_global.h

#ifndef MYDIAL_GLOBAL_H
#define MYDIAL_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(MYDIAL_LIBRARY)
#  define MYDIALSHARED_EXPORT Q_DECL_EXPORT
#else
#  define MYDIALSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // MYDIAL_GLOBAL_H

4.点击编译按钮,编译工程,弹出如下对话框,则编译成功,会在构建路径下生成了动态库和静态库。
在这里插入图片描述
在这里插入图片描述
5.这里成功生成了库文件。但是距离我的仪表类的代码还没有合并过去。
在工程中重新新建一个名为 MyDial 的qt 设计师界面,覆盖掉原来的myDial.cpp和myDial.h。
并且,修改myDial.h,在类的构造函数 定义前加上 宏 MYDIALSHARED_EXPORT
如下:
在这里插入图片描述
使用这种覆盖掉原来文件的方式新建文件,需要同步修改.pro工程文件(Qt有点傻),删掉重复包含的文件
在这里插入图片描述
在这里插入图片描述
然后将仪表类的代码合入mydial.cpp 、mydial.h 、mydial.ui
6.重新编译动态库。

二.调用动态库

调用动态库必要条件:定义动态库的头文件动态库文件
步骤:
1.新建一个普通的qt界面工程。
2.工程文件中添加 库的寻找路径 。
3.我在工程目录内新建一个“include”文件夹,并将动态库的头文件放到里面。
4.在工程中添加动态库头文件。
5.在要调用的地方包含动态库头文件,然后就可以调用库的内容啦。
在这里插入图片描述
调用库中的内容:
在这里插入图片描述
运行实际效果图:
在这里插入图片描述

参考链接:
https://jingyan.baidu.com/article/27fa73265018c246f9271f40.html
https://blog.csdn.net/u011236602/article/details/80835575

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是很大锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值