2016-04-04 15 views
3

Ich versuche, eine OSX OCR C++ Anwendung mit openFrameworks (0.9.0) mit Xcode 7 zu erstellen.Leptonica steht im Konflikt mit Xcode framework

Die OCR-Bibliothek ist Tesseract, die Leptonica erfordert, und ich habe diese beiden durch Homebrew installiert. Tesseract wird als statische Bibliothek (.a-Datei) kompiliert und verknüpft, und Leptonica wird dem Projekt hinzugefügt, indem nur allheaders.h hinzugefügt wird, basierend auf den Anweisungen unter this.

Das Problem ist: Nachdem ich die allheaders.h hinzugefügt hat, stimmte Xcode automatisch ein Argument in allheaders.h zu einer anderen Makrodefinition in FixMath.h, die eine Datei in OSX CarbonCore Framework ist. Dies verursacht Fehler beim Kompilieren.

Die Linie in allheaders.h, dass Konflikte ist:

LEPT_DLL extern NUMA * numaFindPeaks (NUMA *nas, l_int32 nmax, l_float32 fract1, l_float32 fract2);

Das Makro in FixMath.h, das ist in Konflikt:

#define fract1 ((Fract) 0x40000000L)

Es scheint, wie der Compiler auf die Macro als die Referenzierung Definition des Arguments in der Funktion, aber ich weiß nicht, wie ich diese Verbindung trennen soll. Kann jemand einen Vorschlag zur Lösung dieses Problems geben?

Antwort

1

Ich habe gerade in dieser Frage laufen zu - es scheint, dass dies mit, indem Sie einfach undefining das Makro überwunden werden können:

#undef fract1 

in Ihrem Code.

+1

Das hat geholfen - auch wenn es keine ideale Lösung zu sein scheint. In meinem Fall führte die Verwendung von FSEvents zur Überprüfung auf eingehende Dateien in einem Verzeichnis zu dem folgenden Problem: FSEvents stützt sich immer noch auf CarbonCore FixMath.h (obwohl es veraltet sein sollte: https://developer.apple.com/library/content/releasenotes/ Allgemeines/CarbonCoreDeprecations /) – paperlib