Visual Studio中使用开源二维码QR库libqr
来源:互联网 发布:yum安装ruby最新版本 编辑:程序博客网 时间:2024/06/07 22:11
分享一个轻巧的开源二维码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版本):
- 64位: https://cmake.org/files/v3.9/cmake-3.9.1-win64-x64.msi
- 32位: https://cmake.org/files/v3.9/cmake-3.9.1-win32-x86.msi
下载完成后直接安装就好了。注意选择设置环境变量。
然后在命令行中执行cmake命令,能正确执行则说明安装成功。否则需要手动在环境变量中添加cmake命令的路径。
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 pathset (ZLIB_INCLUDE_DIRS "") #set in visual studioset (ZLIB_LIBRARIES "") #set in visual studio#add_definitions(-Wall -Wextra)# Set default compile flags for GCCif(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)##############################################################################
主要意思是将zlib的引用目录设置为空(我们将在VS中编译时指定),同时根据系统编译环境指定编译参数。
然后打开cmd,进入到qrcode的libqr目录下,执行 cmake . 命令:
然后会生成VS的项目文件(.vcxproj)
我们打开libqr_shared.vcxproj编译一个DLL动态库。
设置预处理 QR_DLL_BUILD (如果是编译静态库项目libqr_static则设置为 QR_STATIC_BUILD)
设置我们之前下载的zlib库头文件和lib库目录(我放在qrcode项目下的include和lib目录里,注意Debug版本和Release版本的对应):
然后编译libqr_shared项目即可。
(注意,编译时可能会提示 error LNK2019: 无法解析的外部符号 _snprintf 错误,我们替换所有snprintf为_snprintf,vsnprintf为_vsnprintf就可以了。)
最终会在Debug或者Release目录下(看你编译的是debug还是release版本)生成qr.lib和qr.dll两个文件,然后就可以在其他项目中使用了。
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;}
设置qrcode库头文件及lib库路径
编译后会生成test.exe文件,我们将以上两个dll(zlib.dll、qr.dll)文件放到test.exe目录下
执行test.exe即可生成qrcode.bmp的二维码文件。
以下为“百度一下,你就知道!”生成的二维码,大家可以扫一扫试试。
(参考: http://blog.csdn.net/a549875231/article/details/52048117)
- Visual Studio中使用开源二维码QR库libqr
- Visual Studio中使用开源二维码QR库libqr
- 开源二维码QR CODE编码/解码(识别)库
- libqr--简单好用的c++二维码生成库
- [AX2012 R3]在SSRS报表中使用QR二维码
- 二维码(QR)
- QR二维码
- QR二维码
- QR二维码
- 使用PHP二维码生成类库PHP QR Code生成二维码
- 使用PHP二维码生成类库PHP QR Code生成二维码
- 使用PHP二维码生成类库PHP QR Code生成二维码
- 使用PHP二维码生成类库PHP QR Code生成二维码
- 如何在QR二维码中插入图片
- QR二维码中为什么可以插入图片
- 如何在QR二维码中插入图片
- 使用PHP QR Code生成二维码
- 【转】使用ZXing生成二维码 QR-Code
- POJ 2455 Secret Milking Machine 最大流建模
- 并发容器及典型源码分析
- 如何在生产环境使用Btrace进行调试
- 运维-安装系列文件之操作步骤
- hdu1867—A + B for you again
- Visual Studio中使用开源二维码QR库libqr
- 网页编程--CSS(一)
- HDOJ1558 线段相交问题+并查集处理
- 邻接矩阵/邻接表的遍历方法
- pycharm右键为什么会出现 "Run 'Unittests' in xxx.py"
- C++模板实现双向链表
- spark2.2.0源码学习过程记录:Day1 Day2
- Java并发编程的暗自努力(一)初步介绍
- hexo+github搭建个人博客(超详细教程)