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_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 +=../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_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(); }好了,構建,執行看效果吧
轉載于:https://www.cnblogs.com/gavanwanggw/p/7225660.html
總結
以上是生活随笔為你收集整理的QT5 动态链接库的创建和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker 常用命令(1)
- 下一篇: 老人推倒摩托后去世 继承人被起诉背后:老