OpenCV2.4.10でbuild error
■結論
ライブラリ(cocoapods?)のバグっぽいので、前のバージョンを指定して改善されるまで待つ。
podfileを
platform :ios, "8.1" pod 'openCV', '2.4.9.1'
と書いてバージョン指定。回避。
■経緯
OpenCVで新しい実験をしようとpod installして実験コード書いてみると。謎のビルドエラー。
Undefined symbols for architecture arm64: "_jpeg_free_small", referenced from: _free_pool in opencv2(jmemmgr.o) _self_destruct in opencv2(jmemmgr.o) "_jpeg_mem_available", referenced from: _realize_virt_arrays in opencv2(jmemmgr.o) "_jpeg_free_large", referenced from: _free_pool in opencv2(jmemmgr.o) "_jpeg_open_backing_store", referenced from: _realize_virt_arrays in opencv2(jmemmgr.o) "_jpeg_get_large", referenced from: _alloc_large in opencv2(jmemmgr.o) _alloc_barray in opencv2(jmemmgr.o) "_jpeg_mem_term", referenced from: _jinit_memory_mgr in opencv2(jmemmgr.o) _self_destruct in opencv2(jmemmgr.o) "_jpeg_mem_init", referenced from: _jinit_memory_mgr in opencv2(jmemmgr.o) "_jpeg_get_small", referenced from: _jinit_memory_mgr in opencv2(jmemmgr.o) _alloc_small in opencv2(jmemmgr.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
実験コードがまずい?何か手順違った?と思って、真っ新なプロジェクトに前の記事で上手く行った手順をもう一度やって、OpenCVだけ入れた状態でビルドしてみるが、同様のエラー。
エラーメッセージで検索してみると。同様のエラーが結構出てるっぽい。2.4.10からっぽい。
・OpenCV - Bug #4052/ No iOS Framework for 2.4.10 - OpenCV DevZone
前の記事では、OpenCVの2.4.9.1を入れていた。
(今入ってるライブラリのバージョンは、プロジェクトのpodfile.lockをテキストで開いたら見れた)
入れるライブラリのバージョンを指定してなかったので、最新版が変わって2.4.10が入るようになってビルドエラーとなった模様。
podfileでライブラリのバージョンを指定できるようなので、podfileを書き換えて、もう一度pod install→buildしてみる。
platform :ios, "8.1" pod 'openCV'
↓
platform :ios, "8.1" pod 'openCV', '2.4.9.1'
回避成功。