Windows 下使用 qrencode

来源:互联网 发布:hg的gp03d石斛兰淘宝 编辑:程序博客网 时间:2024/06/04 23:25
在 Windows 下使用 VS2010 编译生成 qrencode,工作于命令行,读入文字,生成 QR 码的 png 图片。
 
组成:
qrencode 3.2.0
libpng 1.5.6
zlib 1.2.5
glibc 2.8 中 getopt 等文件

主要困难:
虽然开源二维码QR码编码库 qrencode 以 C 语言编写,
但工程管理及源码中使用 Linux 平台特性(此说法似乎不严谨),如 getopt_long 等;
以开源图形库 libpng 生成 png 图片,且 libpng 又使用开源 zlib 支持数据压缩,却未配上这两个库,似乎假设开发环境中已经安装,但我不想装。
 
我的工作:
使用 VS2010 创建 General, Empty Project ;
----为 qrencode 部分
将 qrencode 源码(仅 *.h,*.c)加入工程(不含test,use下的测试等部分代码);
在工程属性中定义宏 HAVE_CONFIG_H
将文件 config.h.in 更名为 config.h 加入工程;
根据 VS2010 的特性,修改 config.h 中的部分宏定义,并在文件末尾增加 #undef inline #define inline;

qrenc.c 中
snprintf 函数修改为 _snprintf 函数。
 
----为 png 部分
另外下载编译生成 libpng15 后(下载 zlib 还_得_翻_墙_),
将文件 png.h,pngconf.h,pnglibconf.h,libpng15.lib,libpng15.dll 加入工程,
将 qrenc.c 中
#include <png.h>
改为
#include "png.h"
#pragma comment( lib, "libpng15.lib" )

----为 getopt 部分
从 glibc 2.8 源码中取出 getopt 等文件,修改后加入工程(详见上一篇博文),
将 qrenc.c 中
#include <getopt.h>
改为
#include "getopt.h"

----其它
将 qrenc.c 中
if(strcasecmp(".png", q) == 0) {
改为
if((strcmp(".png", q) == 0) || (strcmp(".PNG", q) == 0)) {
 
----注意
运行需要 libpng15.dll 。
而且,libpng15.dll 和 qrencode 需要使用相同模式(Release,Debug);
我的是 Release 模式。
0 0
原创粉丝点击