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
- QT5 动态链接库的创建和使用
- QT5 动态链接库的创建和使用
- QT5 动态链接库的创建和使用
- QT5 动态链接库的创建和使用
- QT5 动态链接库的创建和使用
- QT5中动态链接库的创建和调用(一)
- QT5中动态链接库的创建和调用(二)
- QT5中动态链接库的创建和调用(三)
- QT5 动态链接库的创建和使用(QT自己做动态库给自己使用)
- 动态链接库的创建和使用
- 动态链接库的创建和使用
- linux 动态链接库的创建和使用--动态连接
- linux 动态链接库的创建和使用--动态连接
- linux 动态链接的创建和使用
- linux的动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- cocos2d 3.10环境搭建
- [疯狂Java]UDP:MulticastSocket实现组播
- cf25d 修路使其联通 (并查集)
- 求一颗二叉查找树的深度(java实现)
- lightoj 1071 - Baker Vai DP
- QT5 动态链接库的创建和使用
- 编写可读代码的艺术 (12)
- 机器学习的数学基础(一)—— 期望、方差、协方差与相关系数
- 日常代码
- typedef和#define的区别及用法
- Objective-C编码规范[译]
- 排序算法:Insertion Sort和Merge Sort in GoLang
- XML初步
- 2016第七届蓝桥杯C/C++ B组省赛第三题:凑算式