|
本来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代码。 |
评分
-
查看全部评分
|