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 并按照此处找到的说明进行操作,该说明引用了用于构建库的构建脚本。

我修改了这个脚本(同样,通过试错,不太确定这是最好的方法)以使用 clang++ 编译器(CXX="/usr/bin/clang++")并使用 libc++(CXXFLAGS="$CFLAGS -stdlib=libc++")并编译(尽管有一些警告)。您可能还需要复制一些标头,因为脚本似乎并未将它们全部复制。

然后在你的 iOS 项目中使用这个库而不是下载的库(记得在构建设置中改回 libc++),一切都会编译和链接得很好。

到目前为止,它似乎在运行时正常工作。

于 2013-04-07T15:55:48.220 回答