OpenCV 2.4.4和Tesseract 3.02.02不要链接在一起

时间:2013-02-12 20:57:36

标签: ios objective-c opencv tesseract

我正在使用iOS 6.1和XCode 4.6

我遇到问题,OpenCV需要用libc ++(LLVM C ++ 11)编译,而Tesseract 3.02.03需要用“默认编译器”编译。

我怎样才能克服这个问题。此时我只能编译和链接如果我注释掉OpenCV代码或注释掉OCR代码。不能让他们俩一起工作。

任何想法??

1 个答案:

答案 0 :(得分:2)

我绝不是C ++的专家,但我遇到了同样的问题,通过一些反复试验和大量的互联网搜索,我认为我设法解决了这个问题。

据我了解,问题是opencv和tesseract是使用不同的标准库构建的。最新的opencv是使用libc ++构建的,而tesseract是使用stdlibc ++构建的

解决方案是重建其中一个,以便它们都使用相同的标准库。我决定重新编译tesseract并按照here找到的指令引用用于构建库的build script

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

然后在iOS项目中使用这个库而不是下载的库(记得在构建设置中更改回libc ++)并且所有内容都可以编译和链接。

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