第三库的编译太坑了, 稍不留神就出错,连错的位置不知道.
感谢这两位博主的指导, 不然估计一直在坑里出来了:
https://blog.csdn.net/weiwei9363/article/details/81196646
https://www.bbsmax.com/A/kvJ3nD1Xzg/
进入正题。
1. 下载库,参考上面链接博主的下载地址
zlib https://zlib.net/fossils/
zint https://sourceforge.net/projects/zint/files/zint/
libpng https://sourceforge.net/projects/libpng/files/libpng16/
下面是我下载的包, 建议下载这个几个文件,因为libpng和zlib两者要匹配才能编译
其中,zint这个库基本每个版本都编译不过, 真不知道他们发布前是怎么测试。 zint-2.6.2 debug 在报错的地方加上“ * ” 号就可以。
2. 编译下载的库,
参考连接: https://blog.csdn.net/weiwei9363/article/details/81196646
此篇写的很详细,建议大家收藏下
3. 调用
此部分参考这篇博客:https://www.bbsmax.com/A/kvJ3nD1Xzg/
用vs创建c++控制台工程, 在工程下面创建两个文件夹 include 和 lib
lib下面在创建debug和release两个文件夹, 将编译的静态库lib放在里面,下面是debug的内容
include 文件让入相应的头文件
打开工程,在工程上右键 —> 属性
包含头文件:
添加lib库
添加生成代码
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include "png.h"
#include "zlib.h"
#include "zint.h"
int _tmain(int argc, _TCHAR* argv[])
{
struct zint_symbol *my_symabol = ZBarcode_Create();
my_symabol->symbology = BARCODE_CODE128;
char *path = "C:\\Users\\Administrator\\Desktop\\111.png";
strcpy_s(my_symabol->outfile,path);
int ret = ZBarcode_Encode(my_symabol,(unsigned char*)"224422sfad",0);
if (ret != 0)
std::cout << ret <<std::endl;
ZBarcode_Print(my_symabol,0);
ZBarcode_Delete(my_symabol);
return 0;
}
将 libpng16.dll 和 zintd.dll 添加到 生成的debug目录下
运行程序便可以生成条形码了。
这是我写的程序, 里面有动态和静态库:
https://download.csdn.net/download/chen1231985111/12034563
这是zint源码, 我已经编译好了, 可生成png格式:
https://download.csdn.net/download/chen1231985111/12031982
这是qt的生成代码:
https://download.csdn.net/download/chen1231985111/12035617
在vs和qt上使用zint库时, dll和lib两者都需要, dll要放在exe所在目录, 不然无法运行.
这是我QT运行截图