5

iOS 6.1 と XCode 4.6 を使用しています

問題があります。OpenCV は libc++ (LLVM C++ 11) でコンパイルする必要がありますが、Tesseract 3.02.03 は「デフォルト コンパイラ」でコンパイルする必要があります。

どうすればこの問題を克服できますか。この時点で、OpenCV コードをコメント アウトするか、OCR コードをコメント アウトする場合にのみ、コンパイルとリンクを行うことができます。両方を連携させることはできません。

何か案は??

4

1 に答える 1

2

私は決してC++の専門家ではありませんが、同じ問題があり、試行錯誤と多くのインターネット検索により、なんとか解決できたと思います。

私が理解しているように、問題はopencvとtesseractが異なる標準ライブラリで構築されていることです。最新の opencv は libc++ でビルドされていますが、tesseract は stdlibc++ でビルドされています。

解決策は、それらのいずれかを再構築して、両方が同じ標準ライブラリを使用するようにすることです。私は tesseract を再コンパイルすることに決め、ライブラリのビルドに使用されるビルド スクリプトを参照するhereの指示に従いました。

このスクリプトを変更して (これも試行錯誤しましたが、これが最善の方法かどうかはわかりません)、clang++ コンパイラ ( CXX="/usr/bin/clang++") を使用し、libc++ ( CXXFLAGS="$CFLAGS -stdlib=libc++") を使用してコンパイルします (いくつかの警告はありますが)。スクリプトがすべてをコピーしていないように見えるため、一部のヘッダーをコピーする必要がある場合もあります。

次に、iOS プロジェクトでダウンロードしたライブラリの代わりにこのライブラリを使用するだけで (ビルド設定で libc++ に戻すことを忘れないでください)、すべてが正常にコンパイルおよびリンクされます。

これまでのところ、実行時に適切に動作しているようです。

于 2013-04-07T15:55:48.220 に答える