欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Visual Studio中使用开源二维码QR库libqr

程序员文章站 2022-07-14 18:19:10
...

分享一个轻巧的开源二维码QR库libqr,源码可以从GitHub上下载。下面我们详细说明一下如何在Visual Studio中编译使用。

1. 源码下载

地址:https://github.com/rsky/qrcode

可以使用git clone下载,也可以直接打包为zip文件下载。

2. 编译

该项目需要使用cmake编译,因此我们先下载cmake。

2.1 cmake下载

cmake可以从官网下载,为了避免设置环境变量的麻烦,我们直接下载安装包,安装的时候选择设置环境变量,然后就可以直接使用cmake命令了。

下载地址(截止目前,最新为3.9.1版本):

下载完成后直接安装就好了。注意选择设置环境变量。
然后在命令行中执行cmake命令,能正确执行则说明安装成功。否则需要手动在环境变量中添加cmake命令的路径。

Visual Studio中使用开源二维码QR库libqr

2.2 编译qrcode库

进入qrcode库所在目录,在libqr文件夹下有个CMakeLists.txt文件,在编译之前我们先修改一下这个文件。

说明一下,该项目依赖于zlib库,因此没有zlib库的朋友需要先下载zlib库,可以去下载源码编译,也可以使用我已经编译好的库直接使用。

已编译好的库下载地址:https://pan.baidu.com/s/1nuErVtv

下载zlib库之后,我们先编辑CMakeLists.txt文件。

修改22-24行,替换为以下内容:

##############################################################################
#find_package(ZLIB)
#set my own zlib path
set (ZLIB_INCLUDE_DIRS "")  #set in visual studio
set (ZLIB_LIBRARIES "")     #set in visual studio

#add_definitions(-Wall -Wextra)
# Set default compile flags for GCC
if(CMAKE_COMPILER_IS_GNUCXX)
 message(STATUS "GCC detected, adding compile flags")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -pedantic -Wall -Wextra")
endif(CMAKE_COMPILER_IS_GNUCXX)
##############################################################################
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

主要意思是将zlib的引用目录设置为空(我们将在VS中编译时指定),同时根据系统编译环境指定编译参数。

Visual Studio中使用开源二维码QR库libqr

然后打开cmd,进入到qrcode的libqr目录下,执行 cmake . 命令:

Visual Studio中使用开源二维码QR库libqr

然后会生成VS的项目文件(.vcxproj)

Visual Studio中使用开源二维码QR库libqr

我们打开libqr_shared.vcxproj编译一个DLL动态库。

设置预处理 QR_DLL_BUILD (如果是编译静态库项目libqr_static则设置为 QR_STATIC_BUILD)

Visual Studio中使用开源二维码QR库libqr

设置我们之前下载的zlib库头文件和lib库目录(我放在qrcode项目下的include和lib目录里,注意Debug版本和Release版本的对应):

Visual Studio中使用开源二维码QR库libqr

Visual Studio中使用开源二维码QR库libqr

Visual Studio中使用开源二维码QR库libqr

然后编译libqr_shared项目即可。

(注意,编译时可能会提示 error LNK2019: 无法解析的外部符号 _snprintf 错误,我们替换所有snprintf为_snprintf,vsnprintf为_vsnprintf就可以了。)
最终会在Debug或者Release目录下(看你编译的是debug还是release版本)生成qr.lib和qr.dll两个文件,然后就可以在其他项目中使用了。

Visual Studio中使用开源二维码QR库libqr

3. 测试使用qrcode库

我们创建一个Test项目来测试qr库。代码如下:

#include <stdio.h>
#include <fstream>
#include "qr.h"

using namespace std;

int main()
{
    int errcode = QR_ERR_NONE;
    //qrInit的5个参数分别是version,mode,纠错等级和掩码,使用过程中使用除了QR_EM_8BIT以外的mode会生成不正常的二维码,暂时不知道原因。
    QRCode* p = qrInit(10, QR_EM_8BIT, 2, -1, &errcode);
    if (p == NULL)
    {
        printf("error\n");
        return -1;
    }

    string strData = "百度一下,你就知道!";
    qrAddData(p, (const qr_byte_t*)strData.data(), strData.length());
    //注意需要调用qrFinalize函数
    if (!qrFinalize(p))
    {
        printf("finalize error\n");
        return -1;
    }
    int size = 0;
    //两个5分别表示:像素之间的距离和二维码图片的放大倍数,范围都是1-16
    qr_byte_t * buffer = qrSymbolToBMP(p, 5, 5, &size);
    if (buffer == NULL)
    {
        printf("error %s", qrGetErrorInfo(p));
        return -1;
    }
    ofstream f("qrcode.bmp");
    f.write((const char *)buffer, size);
    f.close();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

设置qrcode库头文件及lib库路径
Visual Studio中使用开源二维码QR库libqr

Visual Studio中使用开源二维码QR库libqr

Visual Studio中使用开源二维码QR库libqr

编译后会生成test.exe文件,我们将以上两个dll(zlib.dll、qr.dll)文件放到test.exe目录下

Visual Studio中使用开源二维码QR库libqr

执行test.exe即可生成qrcode.bmp的二维码文件。

以下为“百度一下,你就知道!”生成的二维码,大家可以扫一扫试试。

Visual Studio中使用开源二维码QR库libqr

(参考: http://blog.csdn.net/a549875231/article/details/52048117)

相关标签: 二维码