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

来源:互联网 发布:地址栏执行js 编辑:程序博客网 时间:2024/06/01 09:09

记录一下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_OBJECTpublic:    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 +=../sldLIBS += -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_OBJECTpublic:    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();}
复制代码

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





0 0
原创粉丝点击