Xcode 4.6,iOS SDK 6.1,tesseract-ocr 3.02
由于最后一个OpenCV版本是使用 libc ++ 构建的,而tesseract-ocr是使用 libstdc ++ 构建的,因此它们不能在一个xcode项目中一起使用。
所以,我正在尝试使用libc ++构建tesseract。使用脚本here(更新基本sdk并将目标部署到6.1),tesseract正在构建得很好,并且一旦C ++标准库设置为编译器默认值,就可以在我的xcode项目中工作。根据答案here,我尝试用libc ++改变脚本来构建它。我将 CXX 更改为指向 clang ++ ,并将 -stdlib = libc ++ 添加到 CXXFLAGS 。
结果是脚本成功,并且构建了库,但是当在xcode中选择libc ++作为C ++标准库时,我遇到了很多链接器错误,项目构建失败了。当标准库设置为编译器默认值时,新库仍然有效(就像定期生成时一样)
我错过了什么?
答案 0 :(得分:3)
好的,所以我的问题是在我的项目中添加和删除对库的引用几次后,我的库搜索路径出现了很多问题。另外,我没有将新的“include”文件夹(在构建tesseract时创建)添加到用户标题搜索路径。
所以,快速回顾一下,为了使用libc ++构建tesseract-ocr,它可以与更新的OpenCV版本一起使用:
就是这样。此时,您将拥有一个能够同时使用新OpenCV版本和tesseract 3.02的项目。如果是新项目,请不要忘记编辑前缀文件,以便在__cplusplus的情况下包含OpenCV和Tesseract,并使用它们重命名任何.m文件.mm
非常感谢this回答,这让我很顺利。
答案 1 :(得分:2)
Tsseract-OCR-iOS已更新以处理此问题(在与libc ++编译的项目(例如OpenCV)相同的项目中工作)。安装时不要忘记这些步骤:
如果您使用的是iOS7或更高版本,请链接libstdc ++。6.0.9.dylib库(您的目标=> General =>链接的框架和库=> + => libstdc ++。6.0.9)
转到您的项目,单击项目,然后在Build Settings选项卡中将-lstdc ++添加到所有“Other Linker Flags”键。
*转到项目设置,并确保C ++标准库=>编译器默认。 (感谢https://github.com/trein)
从项目根目录下的Template Framework Project复制并导入tessdata文件夹。它包含“tessdata”文件。你可以在这里添加更多的tessdata文件。
*我必须将C ++标准库设置为“libc ++”才能编译OpenCV。