私のプロジェクトは今朝まで問題なく機能していました。私はxcode 4.3と古いバージョンのOpenCVを使用していました(正確なバージョンはわかりません)。OSX はすでに 10.7.x でしたが、10.7.5 ではありません。
現在、OSX を 10.7.5 に、xcode を 4.5.2 にアップグレードし、OpenCV 2.4.3 をダウンロードした後、プロジェクトをビルドしようとすると、次のリンカ エラーが発生します。
アーキテクチャ armv7 の未定義シンボル:
"_OBJC_CLASS_$_ALAssetsLibrary"、参照元:
opencv2(cap_ios_video_camera.o) の objc-class-ref
"cv::FeatureDetector::create(std::string const&)"、参照元:
-[ImageAnalyzer ImageAnalyzer.o の detectBlobs:]
"cv::FeatureDetector::detect(cv::Mat const&, std::vector >&, cv::Mat const&) const"、次から参照:
-[ImageAnalyzer detectBlobs:] in ImageAnalyzer. o
ld: アーキテクチャー armv7 のシンボルが見つかりませんでし
た。
新しいopencvフレームワークを使用するために、古いフレームワークへの参照を削除し、ここからダウンロードした公式のビルド済みopencv2.frameworkへのプロジェクトを参照しました。また、 libz.dylib
への参照を削除し、代わりにlibc++.dylibへの参照を追加しました。
最後のステップは、プレフィックス ファイルを新しいフレームワークに更新することでした。プレフィックス ファイルの関連部分は次のようになります。
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#endif
それはすべて、私が取り除くことができないように見えるこれらの 4 つのリンカ エラーに絞り込まれました。libstdc++.dylibを使用してみましたが、さらに多くのエラーが発生しています。ここで説明されているように、OpenCV を自分でビルドしようとしましたが、ビルド済みのフレームワークと同じエラーが引き続き発生します。
私は何を取りこぼしたか?プロジェクトで他に変更する必要があるものはありますか?
更新: here
に
見られるように、「C++ 標準ライブラリ」を「libc++ (C++ 11 をサポートする LLVM C++ 標準ライブラリ)」に設定すると、エラーが 1 つだけ発生しました。
clang: エラー: -stdlib=libc++ の配置ターゲットが無効です (iOS 5.0 以降が必要です)
展開ターゲットを iOS 5 に変更すると、プロジェクトが再び実行されるようになりました。
これは、OpenCV 2.4.3 が 5 より古い iOS バージョンでは動作しないということですか?