0

ここで入手できるスクリプトを使用して OpenCV を構築しました: http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

次に Unity3d iOS プロジェクトを作成し、Unity3d から xcode プロジェクトを生成し、プロジェクトに OpenCV フレームワークを追加してコンパイルを試みました。

次のエラーが表示されます。

duplicate symbol _adler32 in /my-path/Libraries/libiPhone-lib.a(adler32.o) and /my-path/OpenCV.framework/OpenCV(adler32.o) for architecture armv7

「lipo」と「ar」を使用してOpenCV libからadler32.soを削除しようとした後、libを再パッケージ化しましたが、別の重複したシンボルを取得しました。最終的に、OpenCV ライブラリから多くのオブジェクトを削除したところ、シンボルの欠落について不平を言い始めました。

楽しい実験でしたが、うまくいきませんでした。

OpenCV を使用して xcode でプロジェクトを作成すると、エラーなしでコンパイルされます。OpenCV を使用しない Unity3d プロジェクトも動作します。

  • Xcode バージョン: 4.3.3
  • unity3d バージョン: 3.5.2 (最新)
  • OpenCV: 2.4.1 - フレームワークとして OpenCV を追加。

xcodeの下でリンカーオプションを検索して、より寛容にできるかどうかを確認しましたが、何も見つかりませんでした。

エラーを解決する方法はありますか?

4

1 に答える 1

1

Unity と OpenCV の両方が独自の のコピーでビルドされておりlibz、リンク時に競合しているようです。(_adler32はこのライブラリで使用されるチェックサム関数です。)

これらの共通ライブラリを所有するフレームワークを 1 つ選択し、それに応じて再構築する必要があります。とにかく iOS にあるのでlibz、両方のフレームワークを構築して、これらのライブラリのシステム バージョンを使用することもできます。

于 2012-06-27T12:16:43.517 に答える