QT 动态dll的创建和调用

一、DLL的生成

1.工程文件创建
在这里插入图片描述
命名后直接下一步即可。
2.类文件创建
本例子我们创建2个类进行测试
工程结构如下:
在这里插入图片描述
CommonToolDll代码:

#ifndef COMMONTOOLDLL_H
#define COMMONTOOLDLL_H

#include "commontooldll_global.h"

class COMMONTOOLDLLSHARED_EXPORT CommonToolDll
{

public:
    CommonToolDll();
    static double Sum(double a,double b);
};

#endif // COMMONTOOLDLL_H

#include "commontooldll.h"


CommonToolDll::CommonToolDll()
{
}

double CommonToolDll::Sum(double a, double b)
{
    return a+b;
}

PrintString代码:

#ifndef PRINTSTRING_H
#define PRINTSTRING_H
#include<QString>
#include "commontooldll_global.h"
class COMMONTOOLDLLSHARED_EXPORT PrintString
{
public:
    PrintString();
    static QString PrintHexString(QByteArray str);
};
#endif // PRINTSTRING_H

#include "printstring.h"

PrintString::PrintString()
{

}

QString PrintString::PrintHexString(QByteArray str)
{
    return str.toHex();
}

注意事项:每一个新建的类都得用宏 COMMONTOOLDLLSHARED_EXPORT进行修饰,不然我们后面无法调用此类,这个宏是定义在全局头文件中的。
在这里插入图片描述
3.构建
右键项目工程,运行构建即可。
4.效果
我们需要的dll和lib已经生成,本例子只使用了MSVC编译器,如果使用MinGW会同时生成.a的库文件
在这里插入图片描述

二、调用

1.新建一个Widget项目
2.环境配置
将开始的写的头文件放入我们的including文件夹中
在这里插入图片描述
在pro中添加头文件路径:
在这里插入图片描述
添加lib文件夹翻入dll
在这里插入图片描述

导入lib
右键项目,选择添加库-》外部库
在这里插入图片描述
在这里插入图片描述
然后看见pro文件中的LIBS已经添加,当然也可以手动写入
在这里插入图片描述
界面测试代码:

#include "widget.h"
#include "ui_widget.h"
#include"commontooldll.h"
#include"printstring.h"
#include<QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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

void Widget::on_pushButton_clicked()
{
  int a=ui->lineEdit->text().toDouble();
  int b=ui->lineEdit_2->text().toDouble();
  ui->line_sum->setText(QString::number(a+b));
  QByteArray aa("FF");
  ui->textEdit->setText(PrintString::PrintHexString(aa));
}

运行效果:
在这里插入图片描述

总结:
1.每一个类都要添加外部库宏声明,不然无法正常调用
2.注意调用时配置头文件和库文件
3.将dll放到工程文件目录下

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值