2016-04-04 1 views
3

J'essaye de construire une application OSX OCR C++ en utilisant openFrameworks (0.9.0) avec Xcode 7.Leptonica est en conflit avec le framework Xcode

La bibliothèque OCR est Tesseract qui nécessite Leptonica, et j'ai installé ces deux via Homebrew. Tesseract est compilé et lié en tant que bibliothèque statique (fichier .a) et Leptonica est ajouté au projet en ajoutant uniquement le fichier allheaders.h basé sur les instructions du lien this.

Le problème est le suivant: Après avoir ajouté le allheaders.h, Xcode correspond automatiquement un argument en allheaders.h à une autre définition macro dans FixMath.h, qui est un fichier dans cadre OSX CarbonCore. Cela provoque une erreur lors de la compilation.

La ligne allheaders.h que les conflits est:

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

La macro en FixMath.h que les conflits est:

#define fract1 ((Fract) 0x40000000L)

Il semble que le compilateur fait référence à la macro comme définition de l'argument dans la fonction, mais je ne sais pas comment couper cette connexion. Quelqu'un peut-il donner une suggestion sur la façon de résoudre ce problème?

Répondre

1

J'ai couru juste dans cette question aussi - il semble que cela peut être surmonté par undef simplement la macro avec:

#undef fract1 

dans votre code.

+1

Cela a aidé - même si cela ne semble pas être une solution idéale. Dans mon cas, l'utilisation de FSEvents pour vérifier les fichiers entrants dans un répertoire a provoqué le problème: FSEvents repose toujours sur CarbonCore FixMath.h (même si cela devrait être obsolète: https://developer.apple.com/library/content/releasenotes/ Général/CarbonCoreDeprecations /) – paperlib