Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 4206|回复: 2

lazarus中使用ZXing扫描二维码

[复制链接]

该用户从未签到

发表于 2012-10-22 09:57:34 | 显示全部楼层 |阅读模式
本来zxing的c++部分不是为windows准备的,在windows中编译应该用mingw比较合适。但我不熟悉这个。今天试一下,似乎可以在VS2008编译。虽然有很多问题,不过都可以解决的。
大概有如下问题:

1。isnan, NAN, INFINITY, fmax等一些常量或函数找不到,这是linux与windows包含文件的差异。自己创建就行,我做在nan.cpp和nan.h之中。

2。文件同名:可以把那些文件编译到不同目录,这样就不会干扰了。默认是编译到同一个目录。

3。变长数组的语法:GCC支持变长的数组变量,比如
void gcc(int len) {
  int data[len];
}
但VC不支持,所以很多地方都要改过来。我的做法是:查到它所有的调用之处,找一个比较大的数值来取代len。

4。iconv.h: 要下载:
http://gnuwin32.sourceforge.net/packages/libiconv.htm
需要DLL和lib导入库。我上传的代码不用iconv。通过设置NO_ICONV,可以不需要libiconv,但是扫描结果也没有转换,需要调用方自己做字符集转换。

经过这些,应该可以编译了。

编译它的示例:
这要求有ImageMagick,直接下载一个安装,
安装完成后,新建一个windows控制台项目,导入示例,设置好ImageMagick和zxing头文件和库文件目录。编译后,运行。
我放在zxtest项目中。

根据示例,写pascal接口,这部分代码放在ZXingDLL中。

通过分析,LuminanceSource应该是一个zxing分析图像的接口,要从这个派生出来一个类才能让zxing工作。示例是用MagickBitmapSource ,它用了ImageMagick库,太大,所以我分析了源码,发现只要输出灰度就行了,这样我在DELPHI中获取图像,然后转成灰度图,再转进来。具体看我的DELPHI和lazarus代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x

评分

参与人数 1威望 +7 收起 理由
bugxiong + 7 优秀文章,支持!n神马都是浮云!

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2013-2-1 21:51:00 | 显示全部楼层
本帖最后由 bizman 于 2013-2-1 22:01 编辑

不错,正找这个,怎么不把dll一起发上来呀,还要自己编译
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-1-20 16:55:58 | 显示全部楼层

RE: lazarus中使用ZXing扫描二维码

这个很好,但不能用在wince下,有没有谁能编译成wince下可以用的zxingdll.dll文件
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-12-11 02:23 , Processed in 0.036212 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表