我正在使用iOS 6.1和XCode 4.6
我遇到问题,OpenCV需要用libc ++(LLVM C ++ 11)编译,而Tesseract 3.02.03需要用“默认编译器”编译。
我怎样才能克服这个问题。此时我只能编译和链接如果我注释掉OpenCV代码或注释掉OCR代码。不能让他们俩一起工作。
任何想法??
答案 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 ++)并且所有内容都可以编译和链接。
到目前为止它似乎在运行时正常工作。