使用CocoaPods安装ZXing 2.1
一:在开发项目上添加如下Framework(使用最新版cocoapod獲取zxing最新版不需要此步驟):
1: AVFoundation
2: AudioToolbox
3: CoreVideo
4: CoreMedia
5: libiConv
6: AddressBook
7: AddressBookUI
8:ImageIO
二:添加引用
#import <ZXing/ZXingWidgetController.h>
#import<ZXing/QRCodeReader.h>
三:在调用的类(例如 AViewController )中实现 ZXingDelegate
#pragma ZXingDelegate - (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result { UIAlertView *alert =[[UIAlertView alloc] initWithTitle:@"提示" message:result delegate:self cancelButtonTitle:@"关闭" otherButtonTitles:nil]; [alert show]; } - (void)zxingControllerDidCancel:(ZXingWidgetController*)controller { }
三:调用扫瞄(测试使用的是arc项目)
/** * @brief 测试函数 * * @param sender */ - (IBAction)btn_test_pressed:(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]; widController.readers = readers; [self presentModalViewController:widController animated:YES]; }
四:遇到的问题
问题1: 无法添加 AVFoundation等Framework
问题2: Lexical or Preprocessor Issue 'CoreVideo/CoreVideo.h' file not found
原因:因下载了1月份左右的XCode,这个时期的Xcode版本有点问题,安装不完全
解决:下载最新的XCode进行覆盖安装(今天下载了3月15号发布的版本解决了该问题)
问题3: IOS 'iostream' file not found
解决:
1)将开发项目的调用类(例如上面提到的 AViewController)的.m文件改成.mm文件
2) 將AppDelegate改為.mm文件
问题4: Apple Mach-O Linker Error
Undefined symbols for architecture armv7s
解决:
1) 项目属性-》Build Settings -》查找 Build Active Architecture Only ,将该项改成 NO
2) C++ Standard Library 设置成为一致。将使用静态库的项目以及静态库项目的C++ Standard Library编译设置设置成为一样
的。这里我是将Pod项目的C++ Standard Library设置成为libc++(LLVM C++ standard library with C++ 11 support)
問題5: import了QRCodeReader.h,但無法創建對象,提示找不到該類
解決:
1)將使用QRCodeReader.h的m文件改為mm文件
2)Build Active Architecture Only改為NO
3) 將C++ Language Dialect and C++ Standard Library 改為一樣,參照問題4