ZXing 二维码 For IOS 配置以及使用

转载 2013年12月06日 11:37:10

ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0)。它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, Objective-C, ActionScript和Ruby。

ZBar一般都是直接使用现成的静态库就好了,除非自己要自定义一些功能。zxing也可以但是要包含好多 头文件,还是直接引用工程方便。
下面是具体步骤:
 1.在github 下载zxing开源的代码https://github.com/zxing/zxing。
2.我们保留我们需要的cpp和iphone这2个文件夹,其余的全部删掉。如下图所示
3.对于cpp这个目录,只保留cpp/core/src/zxing下面的内容,其余内容也可以删掉了。但是整个目录结构必须保持原样。裁剪完后,整个目录结构如下所示:

4.接下来,我们把裁剪后的zxing目录整个移动到你自己的项目的根目录下,并且把上图中可以看到的ZXingWidget.xcodeproj文件拖动到你的iOS工程中。

二:

5.我们需要设置ZXing项目和我们原本的iOS项目之间的依赖关系。在我们的iOS项目的设置中,点击build phases tab,然后增加 Target Dependencies 和 Link binary,并且增加这些framework依赖:

完成之后如下图:

二:

最后一步,在设置中增加如下2个header search path:

 

./zxing/iphone/ZXingWidget/Classes

./zxing/cpp/core/src

需要注意的是,第一个path要设置成循环查找子目录,而第二个不循环查找,如下图所示:

 

 

 

 


 

注意:我在使用中遇到了一些问题,主要是编译的问题。

 

1.一个是找不到 头文件。解决方法:把用到ZXing的源文件扩展名由.m改成.mm。

2.报错:Undefined symbols for architecture armv7s,解决方法:把ZXingWidget的一个build target参数:”Build Active Architecture Only” 修改成 “NO”.

3.报错:No such file or directory,出现该错误可能是你的Header Search Path写错了,或者就是你的zxing库的目录结构不是我上面强调的,好好检查一下吧。

4.如果遇到下面问题:

复制代码
std::allocator<char> const&)", referenced from:  
  
(null): "std::string::append(std::string const&)", referenced from:  
  
(null): "std::__throw_out_of_range(char const*)", referenced from:  
  
(null): "std::ios_base::Init::Init()", referenced from:  
  
(null): "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:  
  
(null): "std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::~basic_ostringstream()", referenced from:  
  
(null): "std::string::append(unsigned long, char)", referenced from:  
  
(null): "std::string::_M_leak_hard()", referenced from:  
  
(null): "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const", referenced from:  
  
(null): "std::string::erase(unsigned long, unsigned long)", referenced from:
(null): Linker command failed with exit code 1 (use -v to see invocation)  
复制代码

 

就是C++编译器的设置问题

在Build Settings里我们设置一下:

这样就ok了。

如果再提示

复制代码
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_QRCodeReader", referenced from:
      objc-class-ref in ViewController.o
  "_OBJC_CLASS_$_ZXingWidgetController", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
复制代码

那是zxing不支持最新的arm64架构,改两个地方

1.选armv7和armv7s

 

2.删除arm64

 

如果要加入生成二维码的功能,从下面的链接下载Zxing Demo

http://code4app.com/ios/ZXing-Demo/515561f76803fa5e77000002

 

1.首先把ThirdParty这个文件夹拖到自己的工程里面来,注意是跟main.n在同一级目录,如下图

注意QRCodeEncoderObjectiveCAtGithub.xcodeproj的targets

在项目的targets里面加入这两个

下面这个要注意,ZXingDemo是示例工程名,这里要改成自己项目的名称。



相关文章推荐

ios ZXing 二维码、条形码扫描

转自:http://finalshares.com/read-6901?jike-236 扫描多条: https://github.com/TheLevelUp/ZXingObjC/pull/235...

Zxing 二维码扫描 的简单使用

Zxing 和 Zbar Zxing 和 Zbar 都是强大的二维码扫描 的开源项目 一开始,我也是很纠结,在网上搜索一番后,发现有以下区别(我也没有深入的使用过,对于各种说法是否准确,也不是很清...

Google Zxing 二维码生成与解析

生成二维码的开源项目可谓是琳琅满目,SwetakeQRCode、BarCode4j、Zxing......     前端有JQuery-qrcode,同样能实现生成二维码。     选择Zxing...

Android ZXing 二维码

今天介绍另外一种实现二维码功能的库ZXing,首先下载ZXing资源https://code.google.com/p/zxing/downloads/detail?name=ZXing-2.2.zi...

ZXing 二维码应用

1、导入zxing代码和包 2、下面的类

android zxing 二维码 JavaSE包 3.2.1

  • 2015年06月04日 23:12
  • 96KB
  • 下载

Android Zxing 二维码扫码性能优化

最近再一次做到了扫码项目,扫码出现的扫码性能问题再次摆上了案头,经过自己研究并与同行沟通后得出了目前自己能做到的对扫码性能优化的处理。 1、精简解码码制 目前 github 上 Zxing...

zxing 二维码扫描 最新版 part2

  • 2015年08月15日 11:16
  • 48MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZXing 二维码 For IOS 配置以及使用
举报原因:
原因补充:

(最多只允许输入30个字)