記錄一下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)
我樣在窗體上加一個按鈕,並添加槽
.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();
}
好了,構建,運行看效果吧

源代碼:sharelibDemo.7z
http://www.cnblogs.com/li-peng/p/3844614.htmlbv

