2

最新バージョンのopenCVをiOSプロジェクトに追加しようとしていますが、コンパイルすると、約30のリンクエラーが発生します。

例:

Undefined symbols for architecture i386:
"cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:

OpenCVフレームワークを、他のすべての必要なフレームワークとともに、単純なビデオキャプチャを備えたダミーアプリに追加しました(リンクのチュートリアルに従ってください)。これは完全に機能しました。

なぜそれが1つの場所でこれほどスムーズに機能したのか、他の場所では機能しなかったのかわかりません。私の唯一の考えは、2つのアプリ間で異なるアーキテクチャーをコンパイルすることですが、どちらもarmv7とarmv7sを目指していると思います。

リンクエラーの原因について何か考えはありますか?

4

1 に答える 1

13

これを確認してください:(LLVMコンパイラを使用していると仮定して)

ターゲット>ビルド設定>AppleLLVMコンパイラ4.1-言語>C++標準ライブラリ
を選択してみ てください

libstdc++ (GNU C++ standard library)`  

次に、に切り替えてみてください

libc++ (LLVM C++ standard library with C++11 support)

libstdc ++はopenCVの古いビルドで機能するようですが、libc++は新しいビルドで正しく機能します。(どちらの方法でも)間違って設定すると、この種のエラーが表示されます。

それが原因でない場合は、各プロジェクトでビルド設定を並べて開き、すべての設定を確認してください...

私は最近これと戦っています-ここで私の質問、ここで答え、そしてここでgithubサンプルを参照してください。githubプロジェクトには、数日前に現在のソースからコンパイルされたopencvフレームワークが含まれています。現在、10.6/XCode4.2または10.7/XCode4.4 +でコンパイルする場合、フレームワークの異なるバージョンにリンクするマルチターゲットサンプルをまとめています。[ここのgithubで]

アップデート

libstdc++@mikewozが要求したように、他のフレームワークとの互換性を維持するために、現在のopenCVを実行する必要がある場合があります。libstdc++互換性のある現在のビルドを作成することが可能です。詳細については、マイクの質問に対する私の回答をここで参照してください。

iOS用のlibstdc++を使用したOpenCV2.4.3+?

于 2013-01-06T21:22:21.327 に答える