QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)

2023-11-15

记录一下QT5 动态链接库的创建和使用

在文章的最后有完成的代码供下载

1.创建动态链接库

先新建一个库项目

选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld

再点击下一步到

如果这里我们需要QtGui所以也勾选上了

再点击下一步直到完成

我们在.pro文件里加上

DESTDIR =..\MyDebug

它的意思是我们把生成的内容放到这个文件夹里,如果没有它会自动生成

点击项目把Shadow build 去掉勾选

设置完成后我们来实现方法测试

把sld.h修改成这样

#ifndef SLD_H
#define SLD_H


#include "sld_global.h"
#include <QString>

class SLDSHARED_EXPORT Sld
{
public :
    Sld();
    QString GetStr();
};

#endif

它的.cpp

#include "sld.h"
#include <QDebug>

Sld::Sld()
{
    qDebug()<<"";
}


QString Sld::GetStr()
{
    return "aa";
}

我们那了一个测试方法返回aa

我们再新添加一个窗体供测试用

我给命名为MyDialog

把.h文件修改成

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>
#include "sld_global.h"
namespace Ui {
class MyDialog;
}

class SLDSHARED_EXPORT MyDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MyDialog(QWidget *parent = 0);
    ~MyDialog();

private:
    Ui::MyDialog *ui;
};

#endif // MYDIALOG_H

,cpp

#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);
}

MyDialog::~MyDialog()
{
    delete ui;
}

这里什么也没做只是把SLDSHARED_EXPORT加上了

好了就这样,我们构建一下就会在MyDebug文件夹里生成我们的dll

 

2.怎么使用动态链接库

新建一个Qt WidgetsApplication项目

在.pro文件里修改和上边一样加上

DESTDIR =..\MyDebug 再点击项目把shadow build 去掉

再加上

INCLUDEPATH +=../sld
LIBS += -L$$DESTDIR -lsld

 

第一句是把sld项目的文件夹包含到这个项目里来,这样我们就能直接用它里面的头文件了

第二句是告诉编译器lib在哪(我用的是vs的编译器如果 用mingw可以直接添加sld.dll)

我样在窗体上加一个按钮,并添加槽

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "sld.h"
#include <QMessageBox>
#include "mydialog.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    MyDialog * my =new MyDialog(this);
    my->show();
    QMessageBox * msg=new QMessageBox(this);
    Sld s;

    msg->setText(s.GetStr());
    msg->show();
}

好了,构建,运行看效果吧

 

源代码:sharelibDemo.7z

http://www.cnblogs.com/li-peng/p/3844614.htmlbv

from:http://www.cnblogs.com/findumars/p/5129050.html



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

QT5 动态链接库的创建和使用(QT自己做动态库给自己使用) 的相关文章

  • Vue【四】vue自定义指令。

    Vue 四 vue自定义指令 文章目录 Vue 四 vue自定义指令 TOC 文章目录 前言 一 自定义指令 局部注册 二 自定义指令 全局注册 三 自定义指令 指令的值 总结 前言 除了核心功能默认内置的指令 v model 和 v sh
  • 查询SQL表占用空间(sp_spaceused 表名)

    create table tablespaceinfo 狦 nameinfo varchar 50 rowsinfo int reserved varchar 20 datainfo varchar 20 index size varcha
  • 保定2021高考学校成绩查询,2021年保定高考成绩排名及成绩公布时间什么时候出来...

    保定高考结束后 每年都有很多家长和考试不知道保定高考成绩排名如何查询 保定高考成绩什么时候公布以及查询方式 本文小编整理了保定高考成绩查询排名的相关知识 一 保定高考成绩公布时间及查询方式 根据往年保定高考成绩公布时间预测 2021年保定高
  • 小程序授权微信登录,获取微信用户名,头像,登录code

    getUserProfile e var that this wx getUserProfile desc 用于完善会员资料 success res gt if res 用户名 res userInfo nickName 头像res use
  • 【BERT类预训练模型整理】

    BERT类预训练模型整理 1 BERT的相关内容 1 1 BERT的预训练技术 1 1 1 掩码机制 1 1 2 NSP Next Sentence Prediction 1 2 BERT模型的局限性 2 RoBERTa的相关内容 2 1
  • 小程序(二十三)微信小程序左上角返回按钮触发事件

    微信并没有为我们提供左上角返回上一页触发的事件 但是有的时候这个操作我们还是需要监听一下 下图红框标注的返回上一页按钮 最后实现的效果 点击返回上一页的时候 我需要重新加载上一页的数据 返回上一页按钮只会触发上一页的onShow生命周期函数
  • 怎么将本地文件上传到远程git仓库

    怎么将本地文件上传到远程git仓库 1 先进入项目文件夹 通过命令 git init 把这个目录变成git可以管理的仓库 git init 2 把文件添加到版本库中 使用命令 git add 添加到暂存区里面去 不要忘记后面的小数点 意为添
  • 第二篇:UE4如何动态修改物体材质

    1 找到需要替换材质的物体 可以看到下方所有的材质 它是一个数组 前面是材质的下标 2 打开关卡蓝图 编写如下蓝图 第一步获取所有材质 创建动态材质接口 第二部设置材质 element Index代表要替换的材质下标 Material代表要
  • 米米商城项目

    米米商城 1 开发环境 2 项目功能 3 项目搭建步骤 4 配置文件 4 1 pom xml 4 2 jdbc properties 4 3 Mybaties配置文件 SqlMapConfig xml 4 4 Spring配置文件 4 4
  • 15.Mybatis 更新操作-update

    1 update 标签 update 标签是用于定义更新 语句的 1 1 常用属性 update 有几个常用的属性 但是通常只需要设置id 即可 id sql 片段在命名空间内的唯一标识 和mapper 中方法名保持一致 parameter
  • python使用keyboard库写的GUI键盘宏

    前言 之前和朋友玩游戏 需要一直按住两个按键 很麻烦 就像用python写个小脚本来方便自己 说干就干 用于学习 正文 用到的库 keyborad threading tkinter time 分析 由于需要监听键盘与运行可视化界面 所以要
  • 5.1 setfenv,但5.3可以使用lua_getglobal(l1, "_G");

    5 1使用法 lua State L luaL newstate luaL openlibs L dostring L function f1 my var 100 print var set end create func on stat
  • Springboot+Netty+Websocket实现消息推送实例

    Springboot Netty Websocket实现消息推送 文章目录 Springboot Netty Websocket实现消息推送 前言 一 引入netty依赖 二 使用步骤 1 引入基础配置类 2 netty服务启动监听器 3
  • windows 消息机制

    windows 操作系统是由事件驱动的 也叫消息机制 一般来说分为四步 用户动作也就是事件 gt windows 将事件翻译成消息 gt 将消息放入消息队列 gt 消息循环从消息队列中取出消息并发送给窗口处理程序 我们来看一下窗口最简单窗口
  • Elasticsearch 设置用户名密码认证(亲测)

    文章目录 第一步 在 elasticsearch yml 中添加如下配置 第二步 重启elasticsearch服务 第三步 设置elasticsearch密码 第四步 验证 修改密码 如果密码忘了怎么办 如何重置密码 1 修改elasti
  • 题目2-1 where is the flag

    对照启明星辰网络空间安全学院编著的 CTF安全竞赛入门 靶场和解题思路 考查点 网页源代码 右键查看源代码
  • 谁有用vue.js写的前端模板页面??? 急需!!!

    谁有用vue js写的前端模板页面 急需

随机推荐

  • Ubuntu切换root用户

    Ubuntu下root用户的默认密码 Ubuntu下root的默认密码是随机的 每次开机都会有一个新的密码 可以在中断输入命令 sudo passwd 然后输入当前用户的密码 按下回车 终端会提示输入新的密码并确认 此时的密码就是root新
  • Node.js 学习系列(五)—— 文件系统

    Node js 提供一组类似 UNIX POSIX 标准的文件操作API Node 导入文件系统模块 fs 语法如下所示 var fs require fs 异步和同步 Node js 文件系统 fs 模块 模块中的方法均有异步和同步版本
  • 如何使用SWC,如何发布,打包SWC

    SWC的使用方法 1 如果是FLEX的话就比较简单 直接在library中加入即可 2 是Flash的情况下 目前只有CS4可以直接导入 方法是 file gt gt publish settings gt gt flash gt gt s
  • 从零开始的Python编程

    目录 1 输出函数print 2 转义字符 3 Python中的标识符和保留字 4 变量的定义和使用 5 Python中常见的数据类型 6 数据类型转换 7 Python中的注释 8 input函数的使用 9 运算符 10 对象的布尔值 1
  • SQL优化 ----锁机制

    锁机制 解决因资源共享 而造成的并发问题 示例 当仓库中最后一件衣服时 A这时候下单 随后B也同一时间下单 这时候就会出现问题 到底这最后一件衣服卖给了谁 所以就要通过锁来解决这种问题 衣服 A来的时候加锁 gt 然后A就可以下单 付款 打
  • C++的复制构造函数三种用法

    前言 如果真的想明白 为什么你写的函数的返回值是对象时 有的时候调用了复制构造函数 而有的时候 没有调用复制构造函数 需要明白一件事 函数的返回值是对象时 什么情况下 函数的返回是return by value 即生成了临时对象 这两个问题
  • 【Kubernetes资源篇】Service四层代理入门实战详解

    文章目录 一 Service四层代理概念 原理 1 Service四层代理概念 2 Service工作原理 3 Service原理解读 4 Service四种类型 二 Service四层代理三种类型案例 1 创建ClusterIP类型Ser
  • 线性表 :顺序表(ArrayList) 和 单链表(LinkedList) 详解

    线性表 1 顺序表 2 单链表 单向 不带头 非循环链表 3 顺序表和链表的区别 面试 线性表 List 是n个具有 相同特性 的数据元素的 有限序列 线性表是一种在实际中广泛使用的数据结构 常见的线性表 顺序表 链表 栈 队列 字符串 线
  • mac系统渗透测试小技巧-将命令行工具能够tab补全

    在kali中各种工具都能补全 但在mac中我们有些工具是需要自己下载回来的 每次使用工具都需要进入目录再打开命令行 这样会影响我们渗透测试的速度 说起来就是懒 懒人自有懒方法 其实很简单 我们只需要添加一个软连接到 usr local bi
  • 人工智能学习线路图

    人工智能学习线路图 Python教程 Python 教程 Python 简介 Python 环境搭建 Python 中文编码 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循环语
  • SpringCloud Gateway 在微服务架构下的最佳实践

    前言 本文整理自云原生技术实践营广州站 Meetup 的分享 其中的经验来自于我们团队开发的阿里云 CSB 2 0 这款产品 其基于开源 SpringCloud Gateway 开发 在完全兼容开源用法的前提下 做了诸多企业级的改造 涉及功
  • 从信号处理认识傅里叶变换

    前言 在表示和分析线性时不变系统时 我们的基本方法是将系统输入分解成基本信号的线性组合 其响应是基本输入响应的相同线性组合 卷积和和卷积积分源于我们将输入信号分解成基本信号的一种特定选择 特别是延迟的单位脉冲 这种选择的优点在于 对于线性时
  • 计算机中的换行符、回车符、\n、\r、\n\r 怎么区分

    n是换行 英文是New line r是回车 英文是Carriage return r 是回车 前者使光标到行首 carriage return n 是换行 后者使光标下移一行 line feed r 是回车 return n 是换行 new
  • 将COLMAP中生成的images.txt结果可视化

    instant ngp中执行scripts colmap2nerf py时 在colmap text目录下会生成images txt文件 此文件中每两行定义一幅图像的信息 IMAGE ID QW QX QY QZ TX TY TZ CAME
  • HTTP协议和HTTPS协议的区别

    HTTP协议和HTTPS协议的区别 1 HTTP协议传输的数据都是未加密的 也就是明文的 使用HTTP协议传输隐私信息不安全 2 HTTPS协议是由SSL 安全套接层 为网络通信提供安全及数据完整性的一种安全协议 和HTTP协议构建的 是一
  • Nacos启动异常

    可能原因一 集群切换单机 startup m standalone 可能原因二 derby data文件夹内文件解析失败 解决方案 删了derby data文件夹重启就行 报错信息 供网友搜索 2021 08 11 13 11 37 550
  • Fish Redux系列学习之认识view、action

    继续上一篇文章 Fish Redux系列学习之新建page以及认识state 如上图 现在我们学习的是buildview这个组件 说白了 buildView是我们写页面的地方 跟写普通flutter的page页面一样 我们将页面都写在这里面
  • Date互转String和时间戳

    Date转字符串 private static String convertDateToStr Date date String pattrn if date null return StringUtils EMPTY Instant in
  • 数据类型 -- uint32_t 类型

    整型的每一种都有无符号 unsigned 和有符号 signed 两种类型 float和double总是带符号的 在默认情况下声明的整型变量都是有符号的类型 char有点特别 如果需声明无符号类型的话就需要在类型前加上unsigned 无符
  • QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)

    记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1 创建动态链接库 先新建一个库项目 选择chose进入下一下页面 类型选择共享库 输入一个名称 我输入的是sld 再点击下一步到 如果这里我们需要QtGui所以也勾选