Qt动态加载C库

本文详细介绍了如何在Qt中动态加载C库,包括库的创建、使用步骤及加载过程,通过QLibrary调用库函数,实现了在运行时加载库并打印'Hello'的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用动态加载库的方法可以减轻软件资源,升级简单的特点,

一、使用说明

此处编写动态库和加载动态库功能


二 、编写动态库

新建库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

核心代码

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小白鱼儿_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值