2014-01-20 13 views
6

OpenCVからprecompiled opencv2.frameworkを取得しました。これをプロジェクトに追加しました。しかし、プロジェクトをコンパイルしようとするようなエラーを与える:OpenCV Framework:アーキテクチャarmv7のシンボルが見つかりません

Undefined symbols for architecture armv7: 
    "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from: 
     std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 128>, std::__1::allocator<cv::Vec<int, 128> > >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 64>, std::__1::allocator<cv::Vec<int, 64> > >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 32>, std::__1::allocator<cv::Vec<int, 32> > >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 16>, std::__1::allocator<cv::Vec<int, 16> > >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 12>, std::__1::allocator<cv::Vec<int, 12> > >::__append(unsigned long) in opencv2(matrix.o) 
     std::__1::vector<cv::Vec<int, 9>, std::__1::allocator<cv::Vec<int, 9> > >::__append(unsigned long) in opencv2(matrix.o) 
     ... 
    "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: 
     cv::Exception::Exception(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) in opencv2(system.o) 
     cv::error(cv::Exception const&) in opencv2(system.o) 
     _cvRegisterModule in opencv2(system.o) 
    "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: 
     cv::Exception::formatMessage() in opencv2(system.o) 
    "_OBJC_CLASS_$_ALAssetsLibrary", referenced from: 
     objc-class-ref in opencv2(cap_ios_video_camera.o) 
    "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from: 
     cv::sum(cv::_InputArray const&) in opencv2(stat.o) 
     cv::countNonZero(cv::_InputArray const&) in opencv2(stat.o) 
     cv::mean(cv::_InputArray const&, cv::_InputArray const&) in opencv2(stat.o) 
     cv::meanStdDev(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, cv::_InputArray const&) in opencv2(stat.o) 
     cv::minMaxIdx(cv::_InputArray const&, double*, double*, int*, int*, cv::_InputArray const&) in opencv2(stat.o) 
     cv::minMaxLoc(cv::_InputArray const&, double*, double*, cv::Point_<int>*, cv::Point_<int>*, cv::_InputArray const&) in opencv2(stat.o) 
     cv::norm(cv::_InputArray const&, int, cv::_InputArray const&) in opencv2(stat.o) 
     ... 
    "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from: 
     cv::sum(cv::_InputArray const&) in opencv2(stat.o) 
     cv::countNonZero(cv::_InputArray const&) in opencv2(stat.o) 
     cv::mean(cv::_InputArray const&, cv::_InputArray const&) in opencv2(stat.o) 
     cv::meanStdDev(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, cv::_InputArray const&) in opencv2(stat.o) 
     cv::minMaxIdx(cv::_InputArray const&, double*, double*, int*, int*, cv::_InputArray const&) in opencv2(stat.o) 
     cv::minMaxLoc(cv::_InputArray const&, double*, double*, cv::Point_<int>*, cv::Point_<int>*, cv::_InputArray const&) in opencv2(stat.o) 
     cv::norm(cv::_InputArray const&, int, cv::_InputArray const&) in opencv2(stat.o) 
     ... 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

私は私のビルド設定でのみにありませんビルドアクティブアーキテクチャを設定しましたが、それはまだ発生します。 OpenCVを動作させるためには何が必要ですか?私はiOS7をターゲットにしてXCode 5を使用しています。

私はすでにadded -lstdc++ to linker flags and switch the C++ compiler to libstdc++, as-per this answerです。

ソースからOpenCVをコンパイルしようとしましたが、同じエラーが発生します。

iOS6または7をデプロイメントターゲットとして使用するかどうかは関係ありません。あなたがチェックする必要があり

+0

あなたは解決策を見つけたことがありますか? – aledalgrande

答えて

15

2つのこと:

  1. あなたがOpenCVのが、Xcodeの/打ち鳴らすのC++部分を使用しようとしているが非常にリテラルです。あなたがリンクしているファイルが.mであれば、Objective-Cとして扱います。代わりに、拡張子を.mmに変更するか、右側のバーにファイルのプロパティを表示し、タイプの場合はObjective-C++ Sourceを選択して、Objective-C++ファイルとして扱いたいと考えています。

  2. ALAssetsLibraryAssetsLibrary.frameworkで定義されている、あなたのプロジェクトのためのあなたのリンクバイナリとライブラリステップに追加してください。

+1

私はAssetsLibraryがありませんでした。ありがとう! – jaime

関連する問題