Qt 动态库的编译和使用

qt 动态库的创建和使用教程(step by step) 一般大型项目中, 会将实现特定功能的函数或类, 封装成链接库, 供应用程序代码调用. 下面我将一步步教你如何在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.youkuaiyun.com/u011236602/article/details/80835575

QT动态库及静态库的编写的使用 步骤和上面基本一致只有在选库类型的时候选择静态库。完成以上两项之后分别对其进行构建。然后一直下一步就建立好了。3.建立自己的项目去调用库。然后编译运行看效果就好了。 阅读详情

相关推荐

详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别

详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别 1、Qt版本问题 2、静态库下载 3、Qt动态编译和静态,还有debug 和release(调试和发布) 4、Qt动态编译和静态,还有debug 和release生产exe文件大小问题 5、下载Qt软件及相关的网站推荐下

9339

Qt编译静态链接库和动态链接库(Windows&Linux)

最近需要在Linux中编译相关程序动态库,对相关经验总结。使用到的工具为Qt5.13.2。

watermelon的博客 4253

Qt Andriod 在Windows系统下编译和添加动态库(一)

Qt Andriod 在Windows系统下编译和添加动态库 文章目录Qt Andriod 在Windows系统下编译和添加动态库前言一、Qt 在Windows 系统下如何编译Andriod使用的动态库?二、Qt for Andriod如何在Windows开发环境下调用动态库1.修改.pro文件2.构建时添加库文件和将库文件一起打包3.在新的项目中调用该库总结 日期 作者 版本 说明 2020.12.15 Sleep Tiger V1.0 Release as V1.0 前言 因为项

qq_36349156的博客 2408

Qt creator生成动态库

Qt creator生成动态库

夏言谦的博客 4863

编译Qt4.8.0 生成动态库时出现的问题和解决办法

QT编译过程会使用比较大的硬盘空间,大约占有5-6G。     1.先安装好vs2010,然后去qt网站上下载qt-everywhere-opensource-src-4.7.4.zip 解压到相应     磁盘目录(我的是E:),然后发现有个叫qt-everywhere-opensource-src-4.7.4的文件夹,修改     文件夹名字为qt,此时我的qt安装根目录是e:\qt

skyxfire的专栏 1737

QT+VS制作动态库和引用动态库的详细步骤

我用我写的一个串口小程序程序,将项目里面的一个类的单拎出来做成动态库,接下来以串口逻辑类作为示例:.h.c。

qq_53075518的博客 2323

Qt 动态库的编译和调用

- 编译步骤 新建工程 首先说明一点,我要新建的动态库的功能是:弹出一个模式对话框。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122140243790.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZ...

风云的的博客 6244

构建Cutelyst动态库:使用Qt5.15.2和VS2019在Win10上的编译指南

Cutelyst框架,正如其名,旨在为Web开发领域带来一丝"美丽"的清风。作为Qt家族中的一个Web应用框架,它继承了Qt强大的跨平台特性和易于使用的C++编程风格。Cutelyst专注于MVC(Model-View-Controller)架构,这意味着它将应用分为三大核心组件:模型(Model)负责数据、视图(View)负责展示、控制器(Controller)则负责业务逻辑的处理。这种架构模式在Web开发中广泛运用,因其能提供清晰的代码组织结构。

weixin_42518334的博客 518

Qt Andriod 在Windows系统下编译和添加动态库(二)

日期 作者 版本 说明 2020.12.21 Sleep Tiger V1.0 Release as V1.0 文章目录前言一、怎么生成编译生成动态库?插件开发1.设计接口文件2.配置工程文件3.实现接口的类4.对应实现类的源文件二、打包进apk三、插件调用总结 前言 提示:上篇文章讲了一下Qt for android 编译简单的动态库,但实际的过程中,也有很多调用了其他功能模块或者源码,这就需要我们使用插件的形式去编译生成动态库。 例如:我在实际项目中,使用了modbus通讯方式...

qq_36349156的博客 899

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

这章来学习串口数据流操作。仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个Widget进行布局。如下所示。 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。 加入一些弹簧,使布局美观。(有必要可以加设置不能调整..

Mark_md的博客 9272

Qt调用ffmpeg动态库和静态库及编译ffmpeg的方法

(2)将编译好的ffmpeg里面的include 和lib文件夹粘贴到如下文件夹下。(3)在.pro下添加include路径和动态库路径。将dll文件移植到debug文件夹下。(4)引入ffmpeg动态链接。二、引入ffmpeg库文件。

qq_42475191的博客 1722

国产数据库安装部署说明

国产数据库安装部署说明

weixin_38203586的博客 907

qt编译quazip静态库_ubuntu 编译zlib quazip静态库和动态库

一 环境ubuntu14.04qt-embed4.7.0qt-x864.8.5gcc4.8.4arm-linux-gcc4.5.1二 编译zlib2.1)源码下载 http://www.zlib.net/ 点击此处下载,本次下载版本为1.2.11 2.2)解压 tar -xvf zlib-1.2.11.tar.gz 2.3)配置安装目录和编译工具链 (生成arm版本)export CC=arm...

weixin_39635314的博客 537

Oracle 11g RAC 节点通信故障排查与修复指南

本文详细介绍了Oracle 11g RAC集群发生节点通信故障时的系统性排查与修复方法。当出现节点异常重启时,核心问题往往源于心跳网络中断。文章提供了从快速诊断、日志分析到六层深度检查的完整指南,并给出了针对网络配置、内核参数及Oracle已知Bug等常见根因的实战解决方案,帮助DBA快速恢复集群稳定。

weixin_29246195的博客 270

Windows系统下复现PointNet++算法

本文详细介绍了如何在Windows系统下复现PointNet++算法,内容包括程序下载、环境配置、数据集准备以及三个主要任务(语义分割、分类、部件分割)的实现步骤和常见报错解决方法。通过遵循本文的指导,用户可以顺利完成PointNet++算法的复现。

LingYi_5的博客 4326

windows下libmodbus库编译使用,可供QT项目使用。32位和64位,内含动态库链接

以上为libmodbus动态库编译方式,测试demo这边就不提供了,得到动态库后项目添加modbus.h头文件以及编译好的库,便可以调用头文件里的api。http://通过网盘分享的文件:libmodbus.zip 链接: https://pan.baidu.com/s/11ky8rJL1raaIbpogjAS47w?pwd=r4hq 提取码: r4hq。

m0_62159733的博客 1416

实战复盘:如何用Frida脚本绕过某书APP的libmsaoaidsec.so检测(附完整Hook代码)

本文深入探讨了如何利用Frida脚本绕过某书APP通过libmsaoaidsec.so实现的反Frida检测机制。通过分析动态链接过程中的关键节点和检测模式,提供了两种实战验证的绕过方案:动态Hook关键链接器函数和静态Patch SO文件。文章还分享了进阶对抗策略和调试技巧,帮助安全研究人员有效应对现代移动安全防护挑战。

weixin_42706667的博客 215

QT中编译动态库和使用动态库

https://www.cnblogs.com/hejianglin/p/5245484.html

阿乐的博客 1553

为什么你的SSE连接总断?深入对比EventSource与fetch-event-source的5大差异点

本文深入对比了原生EventSource与@microsoft/fetch-event-source库在SSE连接稳定性上的五大关键差异。重点剖析了后者在请求能力、连接控制、错误处理、数据解析及性能优化方面的优势,特别是其支持POST请求、自定义Header、精细化的重连策略与生命周期管理,为解决生产环境中SSE连接频繁断开的问题提供了专业方案。

weixin_28077113的博客 493

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

lammps构建高熵合金模型+结构优化初步筛选能量最小的结构

qq_45834835的博客 2603

保姆级教程:在Windows和Linux上编译CSerialPort 4.3.x动态库,QT/MFC项目都能用

本文提供了一份详细的跨平台串口开发指南,重点介绍如何在Windows和Linux系统上编译CSerialPort 4.3.x动态库,并集成到QT和MFC项目中。内容涵盖环境配置、源码获取、编译步骤及常见问题解决方案,帮助开发者高效实现串口通信功能。

cumi6497的博客 632

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于QT一款好用的属性页控件QtnProperty的使用和扩展(一)——编译动态库

参考https://blog.youkuaiyun.com/weixin_34138521/article/details/92389552 git:https://github.com/lexxmark/QtnProperty 先说一下题外话,QT扩展库里面官方有提供一个QtPropertyBrowser,这个库小棋觉得提供的控件太少了,不是很好用。 首先第一步是编译该第三方库的dll How to...

小棋学编程的博客 4186

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Qt开发笔记】Qt实现zip压缩和解压,编译、调用zlib和QuaZip动态库过程详解

之前有个小项目中需要对zip压缩文件进行压缩和解压操作,需要用到zlib库,使用Qt开发的话可以用到已经封装好的QuaZip。作为一枚新人程序员应有的习惯,我将整个过程整理成了这篇文章,有不妥的地方还希望看到的朋友能够指出,谢谢!开发环境操作系统:Windows 7 x64 Qt版本:Qt 4.8.4 编译器:MSVC2010 zlib版本:zlib-1.2.11 QuaZip版本:QuaZ

专注Qt与C++开发 7583

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Qt 静态库与动态库的定义和使用

在开发大型应用程序时,我们经常会接触到静态库(Static Libraries)和动态库(Dynamic Libraries)。Qt,作为一个广泛使用的跨平台开发框架,支持这两种库的使用。了解它们的区别和如何在 Qt 中使用静态库和动态库,对于开发高效、可维护的应用程序至关重要。本文将对 Qt 的静态库和动态库进行详细的介绍,帮助大家理解这两种库的定义及使用方法。

qq_44823346的博客 1110

Qt for OpenHarmony 编译鸿蒙调用的动态库

本文介绍了在Windows环境下使用Qt Creator和Harmony NDK编译生成适用于OpenHarmony的动态库(.so)的完整流程。主要内容包括:1) 资源准备,包括下载Qt for OpenHarmony SDK、DevEco Studio开发环境和Qt安装;2) 详细的环境配置步骤,覆盖Qt版本、编译器、构建套件和环境变量设置;3) 实际编译过程,展示了如何创建Qt项目并选择OHOS Clang套件进行编译。该方案实现了Qt与OpenHarmony的集成开发,为跨平台应用迁移提供了高效工具

luoyayun361的专栏 4443
上一篇: Qt 设置窗口边框
下一篇: arm上加载insmod驱动时出现Unknown symbol in module
不是很大锅
博客等级 码龄10年 34粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

不是很大锅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值