现在的位置: 首页 > 综合 > 正文

zxing文档版

2018年08月22日 ⁄ 综合 ⁄ 共 2852字 ⁄ 字号 评论关闭

今天要用到二维码扫描的功能,将之前做的一个可以正确运行的demozxing移植到新工程,却出现了iostream
file notfound
的问题。以下为解决办法。

参考以下文章可以完成将zxing加入到xcode中。

其实主要有几个步骤:

1、下载zxing2.1代码库后http://code.google.com/p/zxing/downloads/list,解压。将iphone目录和cpp复制到工程的目录里。要与工程的.xcodeproj文件同一级。

2、打开自己的工程,iphone/ZXingWidget目录下的ZXingWidget.xcode文件拖拽添加到项目中

3设置自己项目的Link Binary With Libraries

TARGETS ->Build Phases -> Link Binary With Libraries

点击+,添加libZXingWidget.a

4、设置自己项目的Target Dependencies

TARGETS ->Build Phases -> Target Dependencies

点击+,添加ZXingWidget

 

5、设置Header Search Paths

TARGET ->Build Settings -> Search Paths -> Header Search Paths

添加“./iphone/ZXingWidget/Classes相对路径,选择recursive

添加“./cpp/core/src相对路径,选择non-recursive

6、导入iOS框架

TARGETS ->Build Phases -> Link Binary With Libraries

点击+,添加AVFoundationAudioToolboxCoreVideoCoreMedialibiconvAddressBookAddressBookUI

7、修改使用的那个.m文件的后缀为.mm

     在这个.mm文件前面加入类引用

    

#import <ZXingWidgetController.h>

#import <QRCodeReader.h>

 

     在接口申明后面加入委托:

@interface HomeViewController ()<ZXingDelegate>

- (void)loadFunModelPanels;

@end

 

使用方法一
ZXing
直接提供了一个扫描二维码的ViewController,即ZXingWidgetController。在

需要扫描的时候,调用如下代码即可:
- (IBAction)scanCode:(id)sender{s

    ZXingWidgetController *widController = [[ZXingWidgetControlleralloc]
initWithDelegate:selfshowCancel:YESOneDMode:NO];

    NSMutableSet *readers = [[NSMutableSetalloc
]
init];

   QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];

   [readers addObject:qrcodeReader];

   widController.readers = readers;

    [selfpresentModalViewController:widController
animated:YES];

}

ZXing扫描有结果时,会调用如下回调函数:

1 @protocolZXingDelegate
2 - (void)zxingController:(ZXingWidgetController*)controllerdidScanResult:(NSString *)result;
3 - (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;
4 @end

 

 

以下可能遇到的一些编译问题:

1.如果你项目中使用了zxing,但是在xcdoe升级到4.5以后出现Incompatible
pointer types sending'Class' (aka 'Class *') to parameter of type 'id<NSCopying>'
错误,解决办法:重新下载更新版本的ZXing可以使用命令下载最新版本:svncheckout http://zxing.googlecode.com/svn/trunk/
zxing-read-only

2.如果出现了问题Undefined symbols for architecturei386"std::string::c_str() const", referenced from。。。。,

将你项目中的Apple LLVM compiler 4.1 - language中的 c Language Dialectc++
Language Dialect
c++ standard Library设置成下图所选的值。参考http://stackoverflow.com/questions/12665457/zxing-in-xcode-4-5-and-ios-6

3.编译成功往真机上装的时候出现Choose a destination with a supportedarchitecture in order to run on this device ,由于ios设备不支持armv7s,所以必须将Architectures设置为armv6,但是仅仅需要改动valid
architectures
就行,不要改动architectures,否则容易引起真机不运行。把architectures改为$(ARCHS_STANDARD_32_BIT)就可以撞到手机上了。见http://blog.sina.com.cn/s/blog_90a0ad8d01013uuh.html

4:XCode 手贱升级到了 4.6  ZXingSDK  编译不过去了.

出现什么变量声明了没有使用的编译错误提示(可是明明使用了):

Member initializer 'bits_' does not name anon-static data member or base class

谷歌老外牛人多啊,或者说老外也遇到这个问题了,然后提问了,问答地址如下:

http://code.google.com/p/zxing/issues/detail?id=1494

里面说到将 ZXingWidget - BuildSettings - Other WarningFlags 里的 -Werror -Wno-unused-parameter 去掉,

但其实只要去掉 -Werror 就可以了, 如果
-Wno-unused-parameter  这个也去掉了会产生很多变量没有使用的警告.

此时可以编译通过了,烦恼的是  也有少许警告.

5.如果错误如下图所示,则将armv7s删除:

【上篇】
【下篇】

抱歉!评论已关闭.