Qt调用第三方库的通用方式(静态链接库.a或.lib、动态链接库.dll) |
您所在的位置:网站首页 › 数据库驱动程序是以静态链接的形式存在吗 › Qt调用第三方库的通用方式(静态链接库.a或.lib、动态链接库.dll) |
目录 一、前提 二、如何引用静态链接库 三、如何引用动态链接库 四、示例代码资源 在开发项目中经常会存在需要调用第三方库的时候,对于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(静态链接库、动态链接库)的示例工程 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |