私は決してC++の専門家ではありませんが、同じ問題があり、試行錯誤と多くのインターネット検索により、なんとか解決できたと思います。
私が理解しているように、問題はopencvとtesseractが異なる標準ライブラリで構築されていることです。最新の opencv は libc++ でビルドされていますが、tesseract は stdlibc++ でビルドされています。
解決策は、それらのいずれかを再構築して、両方が同じ標準ライブラリを使用するようにすることです。私は tesseract を再コンパイルすることに決め、ライブラリのビルドに使用されるビルド スクリプトを参照するhereの指示に従いました。
このスクリプトを変更して (これも試行錯誤しましたが、これが最善の方法かどうかはわかりません)、clang++ コンパイラ ( CXX="/usr/bin/clang++"
) を使用し、libc++ ( CXXFLAGS="$CFLAGS -stdlib=libc++"
) を使用してコンパイルします (いくつかの警告はありますが)。スクリプトがすべてをコピーしていないように見えるため、一部のヘッダーをコピーする必要がある場合もあります。
次に、iOS プロジェクトでダウンロードしたライブラリの代わりにこのライブラリを使用するだけで (ビルド設定で libc++ に戻すことを忘れないでください)、すべてが正常にコンパイルおよびリンクされます。
これまでのところ、実行時に適切に動作しているようです。