一、源码地址
zqxing git源码
https://github.com/ftylitak/qzxing
zint git源码
https://github.com/zint/zint
zint学习csdn博客
https://blog.csdn.net/hhhuang1991/article/details/83378108
二、环境
Qt版本:5.14.2
编译环境:MSVC2017 32bit
操作系统:Win10
三、zxing
1. 库的编译
从github下载源码:
https://github.com/ftylitak/qzxing
直接构建qzxing-master\src里面的QZXing.pro,得到QZXing3.dll文件。
2. 库的调用
拷贝QZXing.h、QZXing_global.h、QZXing3.lib和QZXing3.dll文件到项目中,静态调用。
3. demo地址
四、zint
1. 库的编译
按照这篇博客进行编译:
https://blog.csdn.net/hhhuang1991/article/details/83378108
除了博客中提到的注意点,个人编译过程还是遇到不少的问题,下面罗列下,仅供参考:
(1)libpng包含zlib文件时,仅包含了刚加入的zlib的文件,会报错,要选中包含整个zlib源码。
(2)错误:警告被视为错误 - 没有生成“executable”文件。 警告:如果指定了 /Qspectre 开关,编译器会插入内存负载的 Spectre 缓解。
原因是vs是2017版,官网文档这样解析:
简单的解决办法是设置zlib库属性:项目 - 属性 - 通用配置 - C/C++ - 常规 - 将警告视为错误 修改为否。
(3)编译zint库,找不到 png.h,要分别添加libpng和zlib的include文件夹。
(4)编译zint库,无法打开源文件: “…\backend\dm200.c”: No such file or directory。没有这个文件,就直接右键移除了。
(5)编译zint库,无法打开输入文件“libpng16.lib”。属性-链接器-常规-添加库libpng的lib文件夹。
3. 库的调用
使用静态调用
//pro文件导入库:
win32: LIBS += -L$$PWD/lib/Zint/lib/ -llibzint
INCLUDEPATH += $$PWD/lib/Zint/include
DEPENDPATH += $$PWD/lib/Zint/include
//cpp文件调用
bool ZintWrapper::encode()
{
bool isSuccess = false;
if(isToEncode || zintSymbol == nullptr)
{
if(zintSymbol)
ZBarcode_Delete(zintSymbol);
zintSymbol = ZBarcode_Create();
syncOptions();
errNum = ZBarcode_Encode(zintSymbol , \
(unsigned char*)properties.dataToEnc.data() ,\
properties.dataToEnc.length());
}
if(errNum < WARN_INVALID_OPTION)
isSuccess = true;
return isSuccess;
}
4. demo地址