前言
使用动态加载库的方法可以减轻软件资源,升级简单的特点,
一、使用说明
此处编写动态库和加载动态库功能
二 、编写动态库
新建库
核心代码
extern “C” Q_DECL_EXPORT void PrintHello();
点击运行生成库,出现下面窗口可以不管
源文件”
#include "hellolibshow.h"
#include <QDebug>
HelloLibShow::HelloLibShow()
{
}
void PrintHello()
{
qDebug() << "Hello";
}
生成库
三、使用动态库步骤
使用动态库需要加入对应的头文件和库文件
说明文档 此处是调用库的头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLibrary>
#include "hellolibshow.h"
namespace Ui {
class MainWindow;
}
typedef void ( * callPrint)();
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QLibrary *m_library;
callPrint m_callPrint;
};
#endif // MAINWINDOW_H
调用库的接口
这里是调用库的源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_library = new QLibrary("HelloLibShow.dll");
if(!m_library){
qDebug() << "init fail";
return;
}
if(!m_library->load()){
qDebug() << "load fail";
return;
}
m_callPrint = (callPrint)m_library->resolve("PrintHello");
if(!m_callPrint){
qDebug() << "resolve fail";
return;
}
m_callPrint();
return;
}
MainWindow::~MainWindow()
{
delete ui;
}
需要把库和头文件放入制定目录中
四、使用结果
打印出Hello字样
五、总结
创建库源文件 — 编译成库 — 放入调用库的目录 — 使用QT调用库的方法 QLibrary调用指定API