侧边栏壁纸
博主头像
三味的小站 博主等级

世界上没有偶然,有的只是必然的结果。

  • 累计撰写 63 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
Qt

zint编译(VS2015)

三味线
2021-05-06 / 0 评论 / 0 点赞 / 33 阅读 / 0 字

Zint是一个强大的一、二维码生成工具

接口文档:https://zint.org.uk/Manual.aspx?type=p&page=5

zint_manual.pdf

一、下载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.tar.gz

libpng-1.6.37.tar.gz

zint-2.9.1-src.tar.gz

下载完后放到同一目录,注意将文件夹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

0

评论区