开源中文网

您的位置: 首页 > Qt开发 > 正文

QT编写和调用dll动态库最新版(隐式调用)

来源: Qt编程  作者: 小黑

网上也有不少教程,但是很多都是只讲述了如何做,没有说为什么,导致很多迷惑,当然包括我。今天仔细尝试了,现在把结果说出来,大家共同学习。

首先我们来创建一个简单的dll,实现两个数相加。

1.首先是新建项目,这里我们选择创建一个libraryc++

2.接下来给你的项目,我的叫plus,点击下一步给类命名,我的类叫PlusFun

2.接下来就是一直下一步了。

然后这是我写好的代码:

头文件:

#ifndef PLUSFUN_H

#define PLUSFUN_H

 

#include "plus_global.h"

 

class PLUSSHARED_EXPORT PlusFun

{

 

public:

    PlusFun();

    int  addFun(int a,int b);

};

 

#endif // PLUSFUN_H

 

源码文件:

#include "plusfun.h"

 

 

PlusFun::PlusFun()

{

}

 

int PlusFun::addFun(int a, int b)

{

    return a+b;

}

 

这样就实现了简单的功能。

3.最后是构建,注意是点击下图的图标构建,而不是运行

现在,去你的目录下就可以看到dll文件了。还需要注意的就是一定要选择release模式,而不是debug

目录下生成了三个文件,我们提取plus.dll,这个文件才是我们需要的。

好了,现在我们来开始调用吧。

啪啪啪,熟练地建立一个应用程序项目,这个就不多说了,来看调用。

本文说的是隐式调用!

在开始之前先分析一下dll在什么时候需要,我们写程序的时候两个地方需要,一个是编译的时候,一个是exe文件运行的时候,那么因此,我们需要在两份dll文件(只用一份请看方法二)。

首先,我们把dll相关的头文件拷贝出来,放到一个目录下,目录是随意的,然后用includepath来加载,这个没什么好说的,拷贝的文件是:plus_globalplusfun.h(总之你把dll相关的头文件都拷贝出来就行了)

 

 

隐式调用方法一:

方法一意义不是很大,也比较难以表达,看不懂可以忽略。

我在D:\QTDev放了一个plus.dll,用来给头文件编译时候调用,然后在程序的输出目录下也放了一个,来给程序运行时候调用。

Pro文件我加了两行代码:

LIBS+=D:/QTDev/plus.dll

INCLUDEPATH+=D:/QTDev/head/

然后调用代码:

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <plusfun.h>//头文件引入

#include <QDebug>

 

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

//调用

    PlusFun plus;

    int c=plus.addFun(2,3);

    qDebug()<<c;

 

}

 

MainWindow::~MainWindow()

{

    delete ui;

}

然后你就会发现输出结果是5.

调用方法二:

方法一太麻烦了,我们完全可以简单一点。

首先,复制你的dll文件到输出目录下面:

Pro文件增加如下:

LIBS+=D:/QTDev/build-callplus-Desktop_Qt_5_6_0_MinGW_32bit-Debug/debug/plus.dll

INCLUDEPATH+=D:/QTDev/head/

 

注意,这里的生成目录我故意没有修改,就是为了显眼。

然后调用代码还是和上面的一样,同样可以调用!

上面说的还是有些复杂,看下面的概述把。

总结,隐式调用就是:

一:在pro文件用LIBS给它指定一下dll文件在哪里;

二:在你的程序exe目录的位置,放一个dll文件。

Tags:最新版 动态
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明