QT5 动态链接库的创建和使用
2015-09-09 09:53
399 查看
http://www.cnblogs.com/li-peng/p/3844614.html
记录一下QT5 动态链接库的创建和使用
在文章的最后有完成的代码供下载
1.创建动态链接库
先新建一个库项目
选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld
再点击下一步到
如果这里我们需要QtGui所以也勾选上了
再点击下一步直到完成
我们在.pro文件里加上
DESTDIR =..\MyDebug
它的意思是我们把生成的内容放到这个文件夹里,如果没有它会自动生成
点击项目把Shadow build 去掉勾选
设置完成后我们来实现方法测试
把sld.h修改成这样
它的.cpp
我们那了一个测试方法返回aa
我们再新添加一个窗体供测试用
我给命名为MyDialog
把.h文件修改成
,cpp
这里什么也没做只是把SLDSHARED_EXPORT加上了
好了就这样,我们构建一下就会在MyDebug文件夹里生成我们的dll
2.怎么使用动态链接库
新建一个Qt WidgetsApplication项目
在.pro文件里修改和上边一样加上
DESTDIR =..\MyDebug 再点击项目把shadow build 去掉
再加上
第一句是把sld项目的文件夹包含到这个项目里来,这样我们就能直接用它里面的头文件了
第二句是告诉编译器lib在哪(我用的是vs的编译器如果 用mingw就是改成sld.dll)
我样在窗体上加一个按钮,并添加槽
.h
.cpp
好了,构建,运行看效果吧
记录一下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 +=$$DESTDIR/sld.lib
第一句是把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(); }
好了,构建,运行看效果吧
相关文章推荐
- MAC下QT5 + Xcode 4.6.3 使用小结
- 用Qt开发第一个Hello World程序
- qt 多线程开发
- Qt安装后配置环境变量(Mac)
- Qt、Qte、Qtopia、Qvfb、Qpe概念区别
- 转:Qt 嵌入式开发环境搭建
- 学习Qt5(5)
- qt使用
- PyQt4 QPixmap.load/loadFromData 使用py2exe 打包后无法显示JPEG,gif等图片的问题
- 关于Qt在子线程中使用QMessageBox的折衷方法
- Qt设置窗口背景透明
- Qt 信号槽机制解析三 补充解释源代码
- QT之线程
- 转载:QT QTableView用法小结
- Qt 用到的函数(持续更新中)
- Qt问题综合
- QT事件(4)
- ARM板上QT4显示中文
- Qt中使用setLayout()函数时报错------Attempting to set QLayout "" on MainWindow "MainWindow",which already has
- 友善之臂の用自己的qt4.7程序替换掉友善之臂的start qt4.7.0