ZXingを使ってiPhoneでQRコードを読む

iOSでQRコードを読み込む(ZXing 2.0)に書かれている方法を使って、iOSQRコードを読むためのアプリを試作してみた。
基本的には、参考エントリの通りでいいのだが、Xcode4.5ではいくつか問題がでたので、そのへんについて補足する。

"recursive path"というチェックボックスがない

「zxing-2.0/cpp/core/src」と「zxing-2.0/iphone/ZXingWidget/Classes」を追加するという部分で、その英文を見ると「... "zxing/iphone/ZXingWidget/Classes" directory. Make sure you click the checkbox "recursive path" !」とか「... cpp/core/src/ where the 'zxing' directory is. Do not check the "recursive path" option for this path.」とか書かれているのだが、どうやらXcode4.5では「non-recursive」と「recursive」というプルダウンになっているので、設定する際は、下記のようにする。

  • /..../iphone/ZXingWidget/Class recursive
  • /..../cpp/core/src non-recursive

Apple Mach-O Linker (Id) Error

このままBuildすると、iostream errorが出るのは参考エントリにも書かれている通りで、ちゃんと拡張子を.mmに変更する必要はあるのだが、これをすると今度は"Apple Mach-O Linker (Id) Error"というエラーが大量に出てくる。
これに関しては、zxing in xcode 4.5 and ios 6 - Stack Overflowにエントリが投げられていたので、このとおりに設定を変更することで対応する。具体的には、「作成したプロジェクト >> TARGETS >> Build Settings >> Apple LLVM compiler 4.1 - Language」の「C++ Standard Library」を「Compiler Default」にするだけ。

ひとまず動いた

取得した文字列データをTextViewに表示するだけなので、URLとかが入っててもそのページにジャンプは出来ないが、ひとまずQRコードが読めたのでよしとする。
実際に動かした時のソースコードはこちら