忽然产品说要二维码的扫描和生产。既然产品说要了那就只有做啦。
网上扒出一篇文章介绍zxing如何集成扫描功能的,原地址点击打开链接。基本参照文章的来完成大部分的集成。而且github上有个demo的例子下来的运行几个版本测试了下一起看的,原网址:点击打开链接
等到自己做的时候还是遇到了问题。
加入项目中还是出现了错误
1 'iostream' file not found 这是忘记修改.m文件成.mm的c++文件
2 还有个加了断点之后真机弹出扫描页面直接挂。。。。去了断点就好
一是项目使用的ARC的。
ZXingWidgetController *widController = [[ZXingWidgetControlleralloc]initWithDelegate:(id<ZXingDelegate>)selfshowCancel:YESOneDMode:NO];
不能直接使用self。要转过:(id<ZXingDelegate>)self
原问题网址:点击打开链接
二是项目对于c++编译的设置
I had the same issue and following configuration in "Build Settings" works for me.
C Language Dialect: GNU99 [-std=gnu99]
C++ Language Dialect: Compiler Default
C++ Standard Library: Compiler Default
三编译出错问题
ld: warning: ignoring file xx/Build/Products/Debug-iphoneos/libZXingWidget.a, file was built for archive which is not the architecture being linked (armv7s): xx/Build/Products/Debug-iphoneos/libZXingWidget.a
"_OBJC_CLASS_$_ZXingWidgetController", referenced from:
objc-class-ref in MZHomePageViewController.o
"_OBJC_CLASS_$_QRCodeReader", referenced from:
objc-class-ref in MZHomePageViewController.o
ld: symbol(s) not found for architecture armv7s
解决方案:设置“Architectures" 和 "Valid Architectures
如图所示:
生成二维码:
上面说的github里的demo里有生成二维码的例子;代码中用到了类库libqrencode。
我是将项目文件夹都拖都了项目下并把它的.Xcodeproject包含进项目中来, 然后增加 Target Dependencies 和 Link binary把它的lib添加进来。并且在Build Setting的header search path中添加路径。再拷贝生成的代码。这些都可以在demo的项目中找到。
好像有时扫描的不是很稳定///