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

5
我正在使用iOS 6.1和XCode 4.6。
我遇到一个问题,OpenCV需要使用libc++(LLVM C++ 11)进行编译,而Tesseract 3.02.03需要使用“默认编译器”进行编译。
如何解决这个问题?目前,如果我注释掉OpenCV代码或注释掉OCR代码,我才能进行编译和链接。无法使它们同时一起工作。
有什么想法吗?

为了更准确,OpenCV 要求我的 iOS 项目使用 libc++ 进行编译,而 Tesseract 需要使用“默认编译器”。 - Shvalb
1个回答

2
我并不是C++方面的专家,但我遇到了同样的问题。经过一些尝试和大量的互联网搜索,我认为我成功地解决了这个问题。
据我所知,问题在于opencv和tesseract使用不同的标准库进行构建。最新的opencv是使用libc++构建的,而tesseract是使用stdlibc++构建的。
解决方法是重新构建其中一个,使它们都使用相同的标准库。我决定重新编译tesseract,并按照此处的说明进行操作,该说明引用了一个构建脚本来构建库。
我修改了这个脚本(再次强调,这是通过尝试和错误修改的,并不确定这是最好的方式),使用clang++编译器(CXX="/usr/bin/clang++")和libc++(CXXFLAGS="$CFLAGS -stdlib=libc++")进行编译(尽管有一些警告)。你可能还需要复制一些头文件,因为脚本似乎没有复制所有的头文件。
然后,在你的iOS项目中使用这个库代替下载的库(记得在构建设置中改回libc++),一切都可以正常编译和链接。
到目前为止,在运行时它似乎可以正常工作。

看起来可以。我还在测试这个配置,但是看起来不错。谢谢! - Sebastian
1
你介意把你的库文件上传到GitHub,让其他人可以简单地包含它们而不必重新编译吗? - Ohad Kravchick
@barduck,你能分享已编译的库吗?我已经尝试了所有方法,但编译仍然存在问题。 - Shmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接