【问题标题】:OpenCV 2.4.4 and Tesseract 3.02.02 Don't link togetherOpenCV 2.4.4 和 Tesseract 3.02.02 不要链接在一起
【发布时间】:2013-01-28 07:10:01
【问题描述】:

我使用的是 iOS 6.1 和 XCode 4.6

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

我该如何克服这个问题。此时,只有注释掉 OpenCV 代码或注释掉 OCR 代码时,我才能编译和链接。不能让它们一起工作。

有什么想法吗??

【问题讨论】:

  • 更准确地说,OpenCV 要求我的 iOS 项目使用 libc++ 编译,而 Tesseract 需要“默认编译器”。

标签: ios objective-c opencv tesseract


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 似乎有效。我仍在测试这个配置,但看起来不错。谢谢!
  • 您介意将您的库文件上传到 github 以供其他人简单地包含而不是重新编译吗?
  • @barduck 你能分享编译好的库吗?我做了所有这些,但编译仍然有问题。
猜你喜欢
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多