QT5 动态链接库的创建和使用

记录一下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)

我样在窗口上加一个button,并加入槽

.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();
}

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

时间: 2024-10-15 14:20:49

QT5 动态链接库的创建和使用的相关文章

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

记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步到 如果这里我们需要QtGui所以也勾选上了 再点击下一步直到完成 我们在.pro文件里加上 DESTDIR =..\MyDebug 它的意思是我们把生成的内容放到这个文件夹里,如果没有它会自动生成 点击项目把Shadow build 去掉勾选 设置完成后我们来实现方法测试 把sld.h修改成这样

LINUX系统中动态链接库的创建与使用{补充}

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这

LINUX系统中动态链接库的创建与使用

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这

C/C++中动态链接库的创建和调用

DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的创建步骤: 创建Dll有两种方式. 一.创建Non-MFC DLL动态链接库 1.打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project —>工程名:DllDemo 2.新建一个.h文件DllDe

动态链接库的创建

fangyukuan 2010.6.20 编写DLL时的函数与一般的函数方法基本一样.但要对库中的函数进行必要的声明,以说明哪些函数是可以导出的,哪些函数是不可以导出的. 把DLL中的函数声明为导出函数的方法有两种: 一是使用关键字_declspec(dllexport)来声明. 二是在.def文件中声明. 一.使用关键字_declspec(dllexport)来声明导出函数 声明函数SayHello为导出函数语句为:int _declspec(dllexport) SayHello (); 为

windows下动态链接库的创建和使用

动态链接库:顾名思义,程序运行时动态加载的库.将程序中的某些模块用动态链接库的方式发布,可以有效的减少可执行文件(.exe)的容量,实现模块与程序的分离.使用动态链接库时最重要的是 .h头文件 .lib引入库文件 .dll文件:.h文件包括类或者变量的申明,.lib文件包括包括该dll导出的变量或者函数的符号名,dll文件包含该DLL实际的函数和数据. 在使用动态库的情况下,在编译连接和执行文件时,只需要连接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中,直到可执行程序运

VS2019 C++动态链接库的创建使用

静态库:函数和数据被编译进一个二进制文件,通常扩展名为.lib,在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件. 动态库:往往提供2个文件,一个是引入库和一个DLL,引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据.在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数. 使用DLL的好处:1.可以采用

DLL动态链接库的创建与使用

? 动态链接库英文为DLL,是Dynamic Link Library的缩写.DLL是一个包含可由多个程序,同时使用的代码和数据的库 --------------百度百科 ? 下面我们使用vs2010创建一个可供win32程序使用的dll ? 打开vs2010,点击新建项目 ? 新建一个win32项目 ? ? 点击下一步 ? 新建一个空的dll项目 右键源文件,添加,新建项 ? 新建一个c文件 同样的在头文件里新建一个h文件 然后就可以开始写代码了 每一个dll都有一个入口函数,这个入口函数叫做

Qt动态链接库的创建和使用

一.生成dll文件 1.创建一个C++库项目. 新建->Library->C++库,然后点击"choose": 位置->类型,选择共享库: 模块的勾选看情况. 最后,工程中有3个文件.mylib.cpp.mylib.h.mylib_global.h. 2.添加内容,即库文件要实现的功能. 例:1.创建一个ui文件 2.修该mylib.cpp.mylib.h文件 1 #include "mylib_global.h" 2 #include <Q