【学习笔记】cpp 二维码条形码生成库

主机环境,vs2015update3,win10 2004 x64

libqrencode

1.首先下载源码

git或者直接浏览器下载都可

2.使用cmake编译

原来打算用vcpkg了,有个文件一直无法下载下来最后还是用cmake了

  • cmake gui界面中配置,源路径和build路径,勾选Advanced
  • 主要配置的是libpng、zlib、getopt的,如果不需要保存为png,下面这些不用配置;
    libpng和zlib为预先编译好的,怎么编译网上应该很多。

  • Configure按钮,再Generate,在Open Project

3.vs2015编译

  • 修改预处理器定义 HAVE_STRDUP=0
  • 修改strdup函数为 mystdup,此函数定义与string库函数冲突,必须修改
    vs中编译,出现错误
    1>libpng.lib(pngerror.obj) : error LNK2001: 无法解析的外部符号 ___iob_func
    1>getopt.lib(getopt.obj) : error LNK2001: 无法解析的外部符号 __imp____iob_func
    这是因为,这2个库可能不是vs2015编译的,时间久远忘记了

参考:https://blog.csdn.net/10km/article/details/50528908

#if _MSC_VER>=1900
#include "stdio.h" 
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
#ifdef __cplusplus 
extern "C"
#endif 
FILE* __cdecl __iob_func(unsigned i) {
	return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */

这段代码添加到,qrenc.c文件最前,重新编译,都成功了

4. 测试

cmd,qrencode.exe,

可以生成png图片,库应该没有问题了
生成二维码没有问题了,还需要生成条形码

zint库

zint支持二维码和条形码生成,比libqrencode功能更多,且libqrencode是LGPL协议,修改或者基于其的都要开源,所以选用zint库

1.

原文地址:https://www.cnblogs.com/nightnine/p/13129245.html