Zint是一个强大的一、二维码生成工具
接口文档:http://zint.org.uk/Manual.aspx?type=p&page=5
一、下载zlib,libpng,zint
zlib: https://zlib.net/fossils/
libpng: https://sourceforge.net/projects/libpng/files/libpng16/
zint: https://sourceforge.net/projects/zint/files/zint/
可直接下载我这里用的版本:
打开其中的zint.sln,右键libzint选择属性
在C/C++ -> 附加包含目录中添加zlib和libpng所在目录

在链接器 -> 常规 -> 附加库目录中添加上面编译好的库所在目录

在链接器 -> 输入 -> 附加依赖项中添加 zlib.lib,libpng16.lib

在C/C++ -> 预处理器 -> 预处理器定义中去掉NO_PNG,这样才能保存png图片

这时候编译会遇到一个函数无法解析的错误

打开libzint中的library.c文件,定位到187行,将其替换为
extern int dpd_parcel(struct zint_symbol *symbol, unsigned char source[], int in_length);

再重新生成即可
然后右键zint点击生成,可以看到Debug目录下已生成libzint.lib,zintd.dll
以上完成了debug库编译,切换到release选项再编译release库。
可以使用zint.exe进行测试
将前面编好的libpng16.dll拷贝到此目录,执行
./zint.exe -o test.png -b 60 -d "123456789"

可以看到生成了条形码图片

backend中的zint.h就是头文件
编译好的库:
三、在Qt中使用
在pro文件中添加
# zint header INCLUDEPATH += $$PWD/zint DEPENDPATH += $$PWD/zint # zint lib CONFIG(debug, debug | release) { LIBS += -llibzintd } else { win32{ LIBS += -llibzint } }
生成条码
struct zint_symbol *my_symbol; my_symbol = ZBarcode_Create(); strcpy_s(my_symbol->outfile, "output.png"); my_symbol->symbology=BARCODE_CODE128B; QString encode_data; encode_data = "123456789"; std::string enStr = encode_data.toStdString(); ZBarcode_Encode(my_symbol, (unsigned char*)enStr.c_str(), 0); int error_num = ZBarcode_Print(my_symbol, 0); if (error_num != 0) { qDebug()<<QString::fromUtf8(my_symbol->errtxt); } ZBarcode_Delete(my_symbol);
将上面编译好的库拷贝到程序执行目录,执行程序,即可在目录下生成output.png

文章评论