2013-07-16 5 views
3

Je suis sur mac 10.7.5, en utilisant xcode 4.6.2 et en travaillant avec la bibliothèque OpenCV 2.4.3. J'ai parcouru le processus de création du répertoire de construction avec les fichiers cmake dans le terminal et j'ai fait le téléchargement.Bibliothèque non trouvée OpenCV

J'ai ajouté les fichiers .dylib dans Xcode et changé le chemin d'en-tête, changé la bibliothèque C++ pour libstdC++, mais quand je compilé je suis arrivé cette erreur:

ld: library not found for -lopencv_calib3d.2.4.3 
clang: error: linker command failed with exit code 1 

Je libopencv_calib3d.2.4.3.dylib ajouté dans le projet donc je n'ai pas idée de quoi d'autre elle a besoin. Des idées?

+0

Avez-vous quelque chose comme un "chemin de bibliothèque" dans l'architecture que vous développez? http://stackoverflow.com/questions/9412296/ld-library-path-the-shared-lib-path-in-linux Votre compilateur accepte-t-il un drapeau comme -L pour gcc/g ++? http://linux.die.net/man/1/g++ – Antonio

+0

Merci pour les liens. J'ai mes architectures comme "Architecture native de Build Machine" et mon compilateur à Default. Si j'ajoute -L dans d'autres drapeaux C++, j'obtiens la même erreur. -L n'est pas une option sous ma bibliothèque C++ mais pourrais-je l'ajouter et changer le compilateur par défaut? Désolé je suis nouveau à la plupart de ceci. –

+0

Je ne sais pas si c'est clair, mais vous devez utiliser '-L directory_where_your_library_is' – Antonio

Répondre

1

Si votre "make back-end" est Cmake, vous devriez vous en tenir à l'utiliser. Les modifications de configuration locales dans Xcode peuvent être "secrètement" écrasées lorsque le cmake est réexécuté (ce qui arrive par exemple après que vous y ayez apporté des modifications) créant des erreurs de construction bizarres et vous obligeant à vous souvenir de toutes les modifications manuelles.

Votre problème semble être que le projet généré ne semble pas savoir où chercher opencv.

En supposant que vous avez installé en utilisant OpenCV macports vous devez ajouter une ligne disant

link_directories(/opt/local/lib) 

à votre CMakeLists.txt. (Si vous avez installé à l'aide d'infusion, ou compilé manuellement Il suffit de remplacer /opt/local/lib pour /usr/local/lib ou le chemin de vos bibliothèques compilées)

Assurez-vous également de relier contre opencv_calib3d au lieu de opencv_calib3d.2.4.3 (sauf si vous avez une raison très particulière pour contourner cette , mais cela signifie généralement que quelque chose d'autre est bizarre dans la configuration :))

Pointeur final que vous connaissez peut-être déjà: Comme vous utilisez déjà Cmake, vous devez ajouter les bibliothèques à lier à l'aide de TARGET_LINK_LIBRARIES (...) dans Cmake plutôt que de les ajouter manuellement dans Xcode (se référant à mon argument précédent).

+0

Je ne pense pas que OP utilise cmake pour construire son propre programme. Il a seulement utilisé cmake pour construire OpenCV – Antonio

+0

où puis-je ajouter les link_directories? Aussi quand j'ajoute les fichiers, il dit calib3d puis après il est ajouté calib3d.2.4.3 –

+1

@AndreaF Désolé, j'ai mal compris votre configuration. Comme je l'ai maintenant, vous n'utilisez pas make pour votre projet actuel, donc la plupart de mes points ne s'appliquent pas. Au lieu de jeter un oeil à cette solution: http://stackoverflow.com/questions/11726837/why-cant-i-compile-this-command-line-opencv-mac-application?rq=1 – kamjagin