主机环境,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库