qt创建带窗口的dll库,并测试效果

1 篇文章 0 订阅

 

dll开发环境:qt5.5.1,编译环境 msvc2010 32bit

dll测试环境:qt5.5.1

前言,看到网上很多相关的帖子,但是有些小细节介绍的不够详细,所以想写一篇入手篇,以供新手参考;相关代码也一起上传了

另外注意,如果增加了资源文件,需要qmake一下,否则可能会构建失败

 

1、dll库的创建

1.1 创建dll工程

此处选择“共享库”,共有三种选项,共享库,静态库,qt plugin(qt 插件),共享库和静态库的区别可以自行百度,两种加载方式不同,一般情况下使用共享库较多。

选择加载的组件,因为有窗口界面,所以勾选qtgui,qtwidgets

1.2 为了在其他地方使用生成的库,qt自动生成了一个{projectName}_global.h头文件,里边有一个些宏定义,为了方便使用,通常我们会将这里边的内容直接拷贝到想要导出的函数或者类所在的头文件中,这样这个文件就可以直接删除了

删除dll-01_global.h,并且将其中的内容拷贝到的dll01.h中

#ifndef DLL01_GLOBAL_H
#define DLL01_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(DLL01_LIBRARY)
#  define DLL01SHARED_EXPORT Q_DECL_EXPORT
#else
#  define DLL01SHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // DLL01_GLOBAL_H

#ifndef DLL01_H
#define DLL01_H

class DLL01SHARED_EXPORT Dll01
{

public:
    Dll01();
};

#endif // DLL01_H

1.3 在导出类中增加一个函数

int Dll01::add(const int& a, const int& b)
{
    return a+b;
}

 1.4 增加一个界面资源

1.5 增加一个直接导出函数

class DLL01SHARED_EXPORT Dll01
{

public:
    Dll01();
    int add(const int& a, const int& b);
};

#endif // DLL01_H

DLL01SHARED_EXPORT void show();
#include "dll01.h"
#include "dialog.h"

Dll01::Dll01()
{
}

int Dll01::add(const int& a, const int& b)
{
    return a+b;
}

void show()
{
    Dialog dlg;
    dlg.exec();
}

 重新构建程序,因为新增一个界面,所以构建前,必须qmake一下,否则可能会出错,切记

2.创建测试工程

2.1 将导出的头文件,lib文件,dll库,放进测试工程目录中,头文件在include中,dll-01.lib在lib文件中,dll在debug目录中

.pro 文件中会自动增加以下内容

win32: LIBS += -L$$PWD/lib/ -ldll-01

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
2.2 在main文件中增加代码
#include "widget.h"
#include <QApplication>
#include "include/dll01.h"
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    Dll01 dll;
    qDebug()<<dll.add(1,2);

    show();

    return a.exec();
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值