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 显示冲突的约束

Xcode 6 中的 Parse 和 Facebook SDK 导入冲突(无法识别“ParseFacebookUtils”)

Xcode7 - 等高乘数约束导致冲突约束

自定义扩展方法与框架扩展方法发生冲突。为啥?

QtOpengl 与 mac 上的 Opengl 框架冲突