Qt 使用共享库

2023-10-27

创建动态库工程

选择模块需要注意的是如果想要将GUI封装成一个动态库,那么必须要要将QtWidgets选中,不然是不能生成ui_xxx.h头文件的

接下来直接都下一步直到创建好就好

创建好之后会有两个头文件,一个.cpp文件

Global.h头文件中主要是 根据创建的类名字生成的导出库所需的一些关键字的宏定义

Q_DECL_EXPORT 导出库所用的Qt的宏定义

#    define Q_DECL_EXPORT     __declspec(dllexport)

Q_DECL_IMPORT是导入库所用的Qt宏

#    define Q_DECL_IMPORT     __declspec(dllimport)

 

如果不需要封装GUI的动态库,那么就可以直接写逻辑了,如果需要对GUI封装成DLL,那么就需要添加一个GUI界面

添加完一个相同的GUI类之后在qrc文件中可能会有重复的头文件,所有需要手动删除即可

还需要在.h文件中修改两处

然后就可以构建,就会在生成文件夹中有一个和工程名一样的.dll文件了

那么要怎么使用该动态库呢?

 

第一种使用隐式方式使用dll

将.h文件以及global.h文件添加入使用动态库工程,将动态库放在.exe运行文件debug文件夹下

第二种显式使用库中的全局函数

需要说明的是,使用QtCreate封装的GUI库,只能在QtCreate中使用,如果在VS创建的Qt工程中使用是不行的(反正我没找到方法),会说moc中的静态函数不能使用_dllexport导出,会出现有几个问题

如果想要在VS中使用动态库类GUI类对象,只能在全局函数中创建出GUI对象,然后返回给外界使用就可以了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 使用共享库 的相关文章

随机推荐

  • C++在线五子棋对战(网页版)项目:websocket协议

    目标 认识理解websocket协议 websocket切换过程和websocket协议格式 认识和学会使用websocketpp库常用接口 了解websocketpp库搭建服务器流程 认识和学会使用websocketpp库bin接口 最后
  • HTML标签marquee实现文字,图片等滚动效果

    HTML标签marquee实现文字 图片等滚动效果 页面的自动滚动效果 可由javascript来实现 也可以由一个html标签 就可以实现多种滚动效果 无需js控制 使用marquee标记不仅可以移动文字 也可以移动图片 表格等 语法 说
  • maven集成tomcat插件以及乱码解决

    Maven已经是Java的项目管理标配 如何在JavaEE开发使用Maven调用Web应用 是很多同学关心的问题 本文将介绍 Maven如何介绍Tomcat插件 Maven Tomcat插件现在主要有两个版本 tomcat maven pl
  • csdn博客推荐系统实战-5文本聚类-话题模型LDA

    话题模型topic model是自然语言处理领域里面热门的一个技术 可以用来做很多的事情 例如相似度比较 关键词提取 分类 还有就是具体产品业务上的事了 总之可以干很多的事情 今天不会讲LDA模型的很多细节和原理 没有满屏的数学公式 只讲一
  • OpenGL光源位置

    一 OpenGL光源简介 OpenGL提供了多种形式的光源 如点光源 平行光源和聚光灯光源等 所有光源都使用 glLight 接口来设置光源属性 其中包括 glLight if 和 glLight if v 两类 1 示例光源 GLfloa
  • 下载好unity后打开出现这个弹窗怎么解决

    unity我重新下了两遍 始终出现这个弹窗 无法打开unity 始终找不到许可 急求 谢谢
  • Matlab 中三角函数

    Matlab 中三角函数 atan2 基本数学函数 abs 绝对值 acos 反余弦 acosh 反双曲余弦函数 acot 反余切 acoth 反双曲线余切 acsc 反余割 acsch 反双曲线余割 angle 相位角 asec 反正割
  • Materials Studio工具模块介绍

    相关教程和破解版软件包下载链接为 https blog csdn net qwxwaty article details 80402505 各模块细节介绍 Materials Visualizer Materials visualizer
  • 总结ctf中 MD5 绕过的一些思路

    总结ctf中 MD5 绕过的一些思路 1 常规的0e绕过 2 数组绕过 3 强类型绕过 4 a md5 a 5 md5 与SQL注入 a b md5 a md5 b sha1 a sha1 b 1 常规的0e绕过 QNKCDZO 24061
  • mapbox 在 vue2 中的使用

    一 Mapbox 在 vue 中的使用 安装 mapbox mapbox gl geocoder npm install save mapbox mapbox gl geocoder 安装 mapbox mapbox gl language
  • (三)原生JavaScript----Ajax的Get请求和Post请求

    三 原生JavaScript使用Ajax的步骤 Router js中有get post接口 一 定义一个ajax函数 const ajax function 二 获取节点值 Ajax函数中 let username document get
  • golang时间-时间戳的获取-转换-计算

    一 获取时间 1 1 获取当前时间 代码实现 package main import fmt time func main currentTime time Now 当前时间 currentYear time Now Year 当前年 cu
  • 浅谈Spring

    Spring是一个轻量级的控制反转 IoC 和面向切面 AOP 的容器 框架 一 什么是IOC IoC Inversion of Control 翻译成中 是 控制反转 的意思 也就是说 Spring 是 个 控制反转 的容器 1 1控制反
  • python可视化学习七(边缘箱型图)

    边缘箱线图 箱图是用来显示变量分布的统计图 直方图更看重与在取值范围内的分布 而箱线图更看重于观察变量间的重要分割点 箱线图能够显示数据分布的关键数据的节点 常用来作为查找异常值的方式 1当直方图的分布越接近正态分布 箱线图就会越对称 2直
  • 栈区,堆区,全局区,文字常量区,程序代码区 详解

    原博地址 http blog csdn net yitian20000 article details 6358837 感觉这篇文章讲的很清晰 很详细 一 预备知识 程序的内存分配 一个由C C 编译的程序占用的内存分为以下几个部分 1 栈
  • typora用户指南

    Typora 一直是我认为桌面端笔记应用应有的终极形态 用我之前 一篇文章 中的话来说就是 它的功能之强大 设计之冷静 体验之美妙 理念之先进 我认为值得所有笔记应用厂商学习 但一件很尴尬的事情是 由于它极简的设计理念 有许多使用者并没能完
  • liunx ftp 421 passive mode refused([linux]配置 vsftp 启用被动模式(passive mode)解决客户端“no route to host“错误)

    系统 CentOS 修改 vsftpd conf 启用被动模式 指定端口 pasv min port 12000 pasv max port 12199 pasv enable YES 配置防火墙 iptables 允许端口访问 iptab
  • vue2项目(二)---Header、Footer

    非路由组件 Header Footer 首页 搜索页 路由组件 Home首页 Search搜索 login登录 无Footer register注册 无Footer 开发项目的步骤 1 书写静态页面 HTML CSS 2 拆分组件 路由 非
  • 华为机试:敏感字段加密

    题目来源 华为机试 敏感字段加密 题目描述 题目解析 要求 删除命令字前后多余的下换线 对指定索引的敏感字段进行加密 替换为 无法找到指定索引的命令字 输出字符串ERROR 分析 如果遇到大小写字母 数字 这一定是密码 可能需要替换成6个
  • Qt 使用共享库

    创建动态库工程 选择模块需要注意的是如果想要将GUI封装成一个动态库 那么必须要要将QtWidgets选中 不然是不能生成ui xxx h头文件的 接下来直接都下一步直到创建好就好 创建好之后会有两个头文件 一个 cpp文件 Global