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是示例工程名,这里要改成自己项目的名称。



Unity编程笔录--Unity二维码识别和生成二维码

二维码识别和生成二维码   前言:有的时候需要进行二维码扫描,但是二维码是怎么在Unity中进行生成呢?本文将介绍到,同时还会涉及到另外一个插件,可以进行对二维码的扫描。   准备资料: ZXing....
  • AdamBieber
  • AdamBieber
  • 2015年07月15日 10:34
  • 9418

通过Unity3d创建二维码(利用zxing2.2)

首先 下载ZXing.Net.0.12.0.0.zip,下载地址为http://zxingnet.codeplex.com/ 然后找到其中的unity文件夹,将文件夹放到Unity的工程内。 脚本: ...
  • liulala16
  • liulala16
  • 2013年11月08日 14:53
  • 8886

解决Xcode5.1编译ZXing出错的问题

项目中需要用到二维码扫描功能,使用了ZXing开源库实现二维码扫描。在Xcode4.6后来升级的xcode5.0都可以编译成功。前几天OS X升级,也顺便升到了Xcode5.1。这下悲剧了。原本好好的...
  • sing_sing
  • sing_sing
  • 2014年03月19日 10:01
  • 4870

Unity结合ZXing生成中间带图标的二维码并保存

1、环境Win10 Unity3d 2017.1.0f3 ZXing.Net ZXing.Net.0.16.0.0 下载:http://zxingnet.codeplex.com/2、效果截图3...
  • AnYuanLzh
  • AnYuanLzh
  • 2017年10月28日 03:07
  • 447

Unity 二维码使用 之 ZXing生成中间带图标的二维码并保存

本文转载至:http://blog.csdn.net/anyuanlzh/article/details/783715351、环境Win10 Unity3d 2017.1.0f3 ZXing.Net ...
  • u014361280
  • u014361280
  • 2018年01月18日 19:30
  • 51

Unity5调用Android第三方sdk报错

这也不算是原创,就是一学习笔记而已。
  • xiaoguda1
  • xiaoguda1
  • 2015年05月18日 18:38
  • 2335

Unity3D/Plugins实现IOS设备二维码扫描功能

0. 背景二维码扫描功能随处可见,基本库网上也有很多资源,但最好用的就是ZBar的库。ZBarSDK-for-iOS适配armv7, amrv7s, arm64的github地址,在XCode上引入安...
  • tab_space
  • tab_space
  • 2016年05月12日 13:48
  • 4150

在iOS中集成ZXing实现二维码扫描

ZXing是一个实现二维码扫描的库,花费我半天时间终于成功把ta
  • cwf19860527
  • cwf19860527
  • 2014年07月01日 19:18
  • 16994

Unity+Vuforia+ZXing解析二维码

Unity+Vuforia+ZXing解析二维码unity中扫描二维码最常用的是EasyCodeScan,但使用后还是觉得太过麻烦。这需要对IOS和Android都有一定了解才能根据自己的想法做更改,...
  • caozhaodan
  • caozhaodan
  • 2017年03月18日 15:12
  • 559

在ios上用ZXing读取二维码,从配置到简单demo

前 zh言          很早以前就知道有两个公共的读取二维码的库供ios使用,它们是zxing(GitHub地址)和zbar(GitHub地址)。我最先使用的zbar,...
  • isfly_cool
  • isfly_cool
  • 2014年06月23日 16:33
  • 1099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZXing 二维码 For IOS 配置以及使用
举报原因:
原因补充:

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