Zint是一个强大的一、二维码生成工具
接口文档:https://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/
可直接下载我这里用的版本:
下载完后放到同一目录,注意将文件夹zlib-1.2.11改为zlib,libpng中可直接获取到。
二、开始编译
1. 编译zlib,libpng
用visual studio打开 /libpng-1.6.37/projects/vstudio/vstudio.sln
右键zlib点击生成
再右键生成libpng,可以看到Debug目录下已生成相关lib,dll
以上就生成了debug库,将环境选项切换到release重复以上步骤即可生成release库。
2. 编译zint
将win32中的vs2015拷贝到上层目录
打开其中的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库。
3. 使用zint.exe进行测试
将前面编好的libpng16.dll拷贝到此目录,执行./zint.exe -o test.png -b 60 -d "123456789"
可以看到生成了条形码图片
backend中的zint.h就是头文件
编译好的库:zint.tar
三、在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
评论区