本文转载至 http://blog.csdn.net/louercab/article/details/26448587

步骤

首先,用Xcode创建我们的demo, 取名TestZXing(根据自己的喜好随便取)。找到项目的位置,打开文件夹,在里面创建一个文件夹取名zxing, 如图:

然后从https://github.com/zxing/zxing上把zxing下载下来。解压打开。由于zxing支持多个平台,而我们只需要支持ios的就行,所以我们只需要保留两个文件夹(cpp和iphone)即可,把两个文件夹复制出来,放到第一步创建的zxing的文件夹下面。如图:

接着我们接续把不需要的文件给删了。对于cpp/core/src文件夹下面的东西,我们只保留bigint和zxing两个文件夹。

对于iphone文件夹,我们需要删除iphone/ZXingWidget目录下面的Tests文件夹。删除后如图:

接下来打开我们的demo,把zxing目录添加到我们的ios项目中,然后把iphone/ZXingWidget下面的ZXingWidget.xcodeproj文件拖到和zxing同级目录。(如果发现有tests文件夹,就把tests文件夹删掉)如图:

然后在项目中面板中点击build phases tab,然后增加 Target Dependencies 和 Link binary,并且增加这些framework依赖,添加后如图:

在设置中增加两个header search path ,需要注意的是,第一个path要设置成循环超找字幕了,而第二个不循环查找,如下图所示:

到这一步,我们就把ZXing库给集成好了。这个时候编译一下,看是否报错。很可惜,的确会报错,错误类型为:

这时,我们找到有错误的那行代码,双击代码左边的红圆点,会弹出如下图提示:

然后双击第二行(带蓝色底的那行),这时发现错误神奇的消失了。

在我们的类加入zxing的依赖关系。

#import <ZXingWidgetController.h>

#import <QRCodeReader.h>

这个是我们画的界面:

在.m中我们这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (IBAction)zxingAction:(id)sender {
    ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
    NSMutableSet *readers = [[NSMutableSet alloc ] init];
    QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    [readers addObject:qrcodeReader];
    [qrcodeReader release];
    widController.readers = readers;
    [readers release];
    [self presentViewController:widController animated:YES completion:nil];
    [widController release];
}
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result
{
    self.showTextView.text = result;
    [controller dismissViewControllerAnimated:YES completion:nil];
}
 
- (void)zxingControllerDidCancel:(ZXingWidgetController *)controller
{
    [controller dismissViewControllerAnimated:YES completion:nil];
}

这个时候编译一下,会报'iosstream' file not found 错误,这时我们需要把.m文件改为.mm文件,和调用这个类的.m文件,改为.mm文件。详细请参考:http://stackoverflow.com/questions/8154024/iostream-file-not-found-in-xcode-4-2

修改后如图:

因为我在SSViewController的头文件中引入了

#import <ZXingWidgetController.h>

#import <QRCodeReader.h>

而且在SSViewController.m中使用了ZXingWidgetController,而ZXingWidgetController里面有C++代码,所以需要把SSViewController的后缀变为.mm。因为SSAppDelegate中调用了SSViewController,所以也要把.m后缀变为.mm。

然后再编译一下,发现编译成功了。那么我们的教程也就结束了。

注意事项

这时因为没有删除ZXingWidget项目中的Tests文件夹,删除掉就OK 了。

2,在删了Tests文件夹后,编译发现还会报错,如图:

这是因为,没有把ZXingWidget.xcodeproj拖到和zxing同级目录,拖ZXingWidget.xcodeproj到和zxing同级目录

如图:

3,有的人不喜欢把zxing文件和.xcodeproj放在同一级目录下面,就像我们的demo那样。如果放在其他地方也可以,这是需要修改header search path中的路径。如果我们把zxing放到TestZXing目录下面,如图:

这时需要修改header search path为:

分享自:http://hi.baidu.com/_delegate/item/56ef8c034c2c3d1aaddc7081

最新文章

  1. openstack api快速入门
  2. sicily 1007. To and Fro 2016 11 02
  3. C语言中的EOF和回车不一样
  4. Linux里startup.sh 和 shutdown.sh
  5. Q promise的使用
  6. 深入了解Qt(一)之QObject
  7. 关于编程语言(转/收藏)-原文作者:韩天峰(Rango)
  8. hdu 2897(威佐夫博奕变形)
  9. bootstrap 笔记01
  10. SHELL自动运行脚本
  11. 并行类加载与OSGI类加载
  12. 【转】Windows自动连接、断开无线网络
  13. 自定义Word颜色主题
  14. 关于SpringMVC
  15. spring boot 集成 Listener 的两种方式
  16. Luogu P3390 【模板】矩阵快速幂&amp;&amp;P1939 【模板】矩阵加速(数列)
  17. v-for v-if || v-else
  18. Atitit 提升进度的大原则与方法 &#160;高层方法 &#160;attilax总结
  19. python 数据结构之顺序列表的实现
  20. 动态规划之91 decode ways

热门文章

  1. 基于Rebound制造绚丽的动画效果-入门篇
  2. bmp,jpg,png,tif,wmf,emf与eps图片格式转换
  3. ylbtech_dbs_article_五大主流数据库模型
  4. c++ comment
  5. Elasticsearch教程(二),IK分词器安装
  6. autoRelease
  7. TCO&#39;10 Online Round 3 1000pt
  8. react-native 创建 ios 项目
  9. 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)
  10. cocos2d-x 3.0 回调函数