Leptonica 与 Xcode 框架冲突
Posted
技术标签:
【中文标题】Leptonica 与 Xcode 框架冲突【英文标题】:Leptonica conflicts with Xcode framework 【发布时间】:2016-07-23 11:49:58 【问题描述】:我正在尝试使用带有 Xcode 7 的 openFrameworks (0.9.0) 构建 OSX OCR C++ 应用程序。
OCR 库是需要 Leptonica 的 Tesseract,我已经通过 Homebrew 安装了这两个库。 Tesseract 被编译并链接为静态库(.a 文件),Leptonica 被添加到项目中,方法是根据this 链接上的说明仅添加 allheaders.h。
问题是:在我添加allheaders.h
之后,Xcode 自动将allheaders.h
中的一个参数匹配到FixMath.h
中的另一个宏定义,这是 OSX CarbonCore Framework 中的一个文件。这会导致编译时出错。
allheaders.h
中发生冲突的行是:
LEPT_DLL extern NUMA * numaFindPeaks ( NUMA *nas, l_int32 nmax, l_float32 fract1, l_float32 fract2 );
FixMath.h
中发生冲突的宏是:
#define fract1 ((Fract) 0x40000000L)
似乎编译器将宏引用为函数中参数的定义,但我不知道如何切断这种连接。任何人都可以就如何解决这个问题提出一些建议吗?
【问题讨论】:
【参考方案1】:我也遇到了这个问题——看来可以通过简单地取消定义宏来解决这个问题:
#undef fract1
在您的代码中。
【讨论】:
这确实有所帮助——即使它似乎不是一个理想的解决方案。在我的情况下,使用 FSEvents 检查目录中的传入文件会导致问题:FSEvents 仍然依赖于 CarbonCore FixMath.h(即使它应该被弃用:developer.apple.com/library/content/releasenotes/General/…)以上是关于Leptonica 与 Xcode 框架冲突的主要内容,如果未能解决你的问题,请参考以下文章
iOS使用Xcode开发如何避免与解决冲突-不区分svn和git-100%保证你远离冲突
Xcode 6 中的 Parse 和 Facebook SDK 导入冲突(无法识别“ParseFacebookUtils”)