配置(三)—— win10 x64环境下利用vs2015编译zxing-cpp及利用zxing C++进行解码


在这里,我将介绍如何利用cmake, vs2015对zxing-cpp进行编译,并且利用zxing-cpp c++版本进行解码。我已经编译好了x64 vs2015环境下的zxing-cpp库,并给出了相应的解码demo,可以参考GitHub代码(其中zxing是已经编译好的库,可以直接配置使用,像配置opencv一样(但不需要动态链接库);demo是演示解码例程)。

CMake 安装与配置

CMake官网下载安装程序。直接安装CMake,但在安装的时候要记得勾选将CMake包含在电脑的环境变量中;如果安装时没有勾选,那也没关系,直接找到CMake的安装路径,将其bin文件所在路径添加到环境变量中(不懂的可以Google)。

zxing-cpp 下载与编译
  1. zxing-cpp是zxing开源库的C++接口,该作者也一直在维护该库。在这里直接clone zxing-cpp 到本地目录下面(如下图),得到下面的文件(初始是没有build文件夹)
    在这里插入图片描述
  2. 在zxing-cpp目录下建立build文件夹(也就是上图中的build文件夹),供CMake编译保存。如下图,分别选择两个相应的路径,在Configure中,一定要设置正确的编译器和机器位数(本文设置的是vs2015 v14和 x64), 千万不能忽略。 设置完成之后,直接Generate就ok了, 没问题的话都是done的状态。
    在这里插入图片描述
  3. CMake 完成编译之后,打开build文件夹,我们可以找到一个zxing.sln的文件,直接用vs2015打开。
    在这里插入图片描述
  4. 打开之后,在vs2015里面设置成debug x64模式,右键Solution ‘zxing’ 直接build即可。
    在这里插入图片描述
  5. 工程建立完毕之后,会在build文件夹下面,生成Debug的文件夹,如下图。
    在这里插入图片描述
  6. 在Debug文件夹下面,我们可以得到 libzxing-debug.lib 和zxing.exe两个文件。
    在这里插入图片描述
  7. zxing.exe文件可以在命令行下面直接运行(如下面命令行执行所示),可以设置图片进行解码。在这里,libzxing-debug.lib对我们才是重要的。
    在这里插入图片描述
  8. 得到libzxing-debug.lib后,我们可以像配置opencv库一样配置好zxing-cpp库,来进行解码。这里,我 将 libzxing-debug.lib 和 zxing-cpp\core\src目录下面的zxing文件夹拷贝出来,构成一个单独供C++调用的 zxing库。 如下图所示,建立了一个新的zxing文件夹,在其下面建立一个lib文件夹,将libzxing-debug.lib拷贝进去;并且将zxing-cpp\core\src目录下面的zxing文件夹拷贝到该zxing文件夹里面。这样,我们就得到了一个类似于opencv的库,只是是静态链接库。
    在这里插入图片描述
  9. 利用vs2015建立一个demo工程,在debug x64属性下配置好opencv 和 刚刚建立好的zxing库,形成zxing-cv属性表(不会属性配置详见Google,或者参照GitHub链接中的配置)。在工程中添加source.cpp文件,如下,其他文件参考Github链接。
#include <string>
#include <fstream>
#include <zxing/LuminanceSource.h>
#include <zxing/common/Counted.h>
#include <zxing/Reader.h>

#include <zxing/common/GlobalHistogramBinarizer.h>
#include <zxing/DecodeHints.h>
#include <zxing/MultiFormatReader.h>
#include <zxing/oned/CodaBarReader.h>
#include 
转载的东西: 本来zxingc++部分不是为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代码。 上传的压缩包没有带dll,只有工程文件,谁有VS2008编译一下吧。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值