Qt调用第三方库的通用方式(静态链接库.a或.lib、动态链接库.dll)
创始人
2024-12-29 03:07:52
0次

目录

一、前提

二、如何引用静态链接库

三、如何引用动态链接库

四、示例代码资源


在开发项目中经常会存在需要调用第三方库的时候,对于Qt如何来调用第三方库,为了方便自己特意记录下详细过程。

一、前提

1. window 10操作系统

2. 已安装了Qt6.7.0版本,官方下载网站一步到位:Download Qt OSS: Get Qt Online Installer

    另外QT5版本也适用。

3、本示例中用第三方库(qrencode库)来举例。

        其中qrencode库的静态链接文件为:libqrencode.a

        qrencode库的动态链接文件为:qrencode.dll

        库的导出头文件为:qrencode.h

二、如何引用静态链接库

必备的两个文件:qrencode.h、libqrencode.a(或者.lib文件)

工程目录数结构,可以参照如下:

bin文件夹:       存放最后编译的工程app可执行文件
include文件夹:存放第三方库依赖的头文件,qrencode.h
libs文件夹:      存放静态链接库,libqrencode.a

文件放置后,开始在工程项目中引用它:

然后下一步,即可在.pro文件中自动添加如下的信息:

win32: LIBS += -L$$PWD/../libs/ -lqrencode

INCLUDEPATH += $$PWD/../include


DEPENDPATH += $$PWD/../include

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../libs/qrencode.lib


else:win32-g++: PRE_TARGETDEPS += $$PWD/../libs/libqrencode.a

另外:指定项目放置.exe文件存放的路径为bin的方法,在.pro文件中增加:

DESTDIR = $$PWD/../bin #指定在何处放置目标文件

然后在工程中即可进行二维码的相关操作,在使用的地方进行“#include "qrencode.h"”。关键性代码如下:

#include "qrencode.h"     void MainWindow::on_pushButton_ok_clicked() {     QString text = ui->lineEdit_content->text();       QPixmap qrPixmap;     int width = ui->label_code->width();     int height = ui->label_code->height();     gernerateQRCode(text, qrPixmap, 10);     qrPixmap = qrPixmap.scaled(QSize(width, height), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);       ui->label_code->setPixmap(qrPixmap);   }   void MainWindow::gernerateQRCode(const QString &text, QPixmap &qrPixmap, int scale) {     if(text.isEmpty()) {         return;     }       //二维码数据     QRcode *qrCode = nullptr;       //这里二维码版本传入参数是2,实际上二维码生成后,它的版本是根据二维码内容来决定的     qrCode = QRcode_encodeString(text.toStdString().c_str(), 2, QR_ECLEVEL_Q, QR_MODE_8, 1);     if(nullptr == qrCode) {         return;     }       int qrCode_Width = qrCode->width > 0 ? qrCode->width : 1;     int width = scale * qrCode_Width;     int height = scale * qrCode_Width;       QImage image(width, height, QImage::Format_ARGB32_Premultiplied);       QPainter mPainter(&image);     QColor background(Qt::white);     mPainter.setBrush(background);     mPainter.setPen(Qt::NoPen);     mPainter.drawRect(0, 0, width, height);     QColor foreground(Qt::black);     mPainter.setBrush(foreground);     for(int y = 0; y < qrCode_Width; ++y) {         for(int x = 0; x < qrCode_Width; ++x){             unsigned char character = qrCode->data[y * qrCode_Width + x];             if(character & 0x01) {                 QRect rect(x * scale, y * scale, scale, scale);                 mPainter.drawRects(&rect, 1);             }         }     }       qrPixmap = QPixmap::fromImage(image);     QRcode_free(qrCode); }

工程运行的效果图:

三、如何引用动态链接库

大致步骤和“3.1如何引用静态链接库”一样,不同的地方如下几点:

必备的两个文件:qrencode.h、qrencode.dll

工程目录数结构,可以参照如下:

bin文件夹:       存放最后编译的工程app可执行文件、以及动态链接库,qrencode.dll

include文件夹:存放第三方库依赖的头文件,qrencode.h

文件放置后,开始在工程项目中引用它:

直接在.pro文件中进行引用:

win32: LIBS += $$PWD/../bin/qrencode.dll


INCLUDEPATH += $$PWD/../include

另外:指定项目放置.exe文件存放的路径为bin的方法,在.pro文件中增加:

DESTDIR = $$PWD/../bin #指定在何处放置目标文件

然后在工程中即可进行二维码的相关操作,在使用的地方进行“#include "qrencode.h"”。关键性代码和“3.1如何引用静态链接库”一样。

工程运行的效果图:

四、示例代码资源

资源链接:window下Qt如何调用第三方库qrencode(静态链接库、动态链接库)的示例工程

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...