2017-03-13 1 views
0

Je suis en train d'essayer d'ajouter la bibliothèque RaspiCam trouvé ici:Référence non définie, mais Linked Library

https://sourceforge.net/projects/raspicam/?source=typ_redirect

à la bibliothèque Apriltags trouvé ici:

http://people.csail.mit.edu/kaess/apriltags/

Je dézippé le RaspiCam bibliothèque et construit séparément, puis copié et collé dans le dossier AprilTags. Mon dossier AprilTags ressemble à ceci maintenant:

AprilTags build cmake CMakeLists.txt example LICENSE Makefile pod-build raspicam-0.1.6 README.txt src systems.txt tags 

Dans le dossier raspicam-0.1.6 est la suivante:

build Changelog CMakeLists.txt CMakeLists.txt.user cmake_uninstall.cmake.in dependencies README src utils 

ajouter la bibliothèque de raspicam au sommet de mon code dans AprilTags comme:

#include <raspicam/raspicam_cv.h> 

et il détecte quand je construis. Je le sais parce que j'ai mal écrit la bibliothèque, ex. raspicam_cvv.h, et il m'a donné une erreur parce qu'il n'y a pas de bibliothèque comme ça. Donc, c'est définitivement lié. Cependant, lorsque je tente d'utiliser la bibliothèque dans le code avec par exemple

raspicam::RaspiCam_Cv Camera; 

donne cette erreur:

CMakeFiles/apriltags_demo.dir/apriltags_demo.cpp.o: In function `main': 
apriltags_demo.cpp:(.text.startup+0x2d4): undefined reference to `raspicam::RaspiCam_Cv::RaspiCam_Cv()' 
apriltags_demo.cpp:(.text.startup+0x324): undefined reference to `raspicam::RaspiCam_Cv::~RaspiCam_Cv()' 
apriltags_demo.cpp:(.text.startup+0x384): undefined reference to `raspicam::RaspiCam_Cv::~RaspiCam_Cv()' 
collect2: error: ld returned 1 exit status 
example/CMakeFiles/apriltags_demo.dir/build.make:139: recipe for target 'bin/apriltags_demo' failed 
make[3]: *** [bin/apriltags_demo] Error 1 
CMakeFiles/Makefile2:193: recipe for target 'example/CMakeFiles/apriltags_demo.dir/all' failed 
make[2]: *** [example/CMakeFiles/apriltags_demo.dir/all] Error 2 
Makefile:127: recipe for target 'all' failed 
make[1]: *** [all] Error 2 
Makefile:27: recipe for target 'all' failed 
make: *** [all] Error 2 

comme une référence non définie. J'ai fait quelques recherches en ligne et trouvé une requête similaire ici: library is linked but reference is undefined où la solution est de changer l'ordre dans lequel vous liez. Cependant, parce que les deux projets sont construits en utilisant CMake, je ne sais pas comment vous changeriez l'ordre des liens. Pour être honnête, je suis un peu perdu en termes de construction en C++ en général, donc toute aide ou conseil est très apprécié. Merci!

Répondre

0

NOTE - je faire un commentaire si je pouvais, ont besoin de plus représentant:

  • Avez-vous essayé « » sur <> pour votre inclure? <> est pour les répertoires prédéfinis alors que "" suit un chemin relatif

  • Cela peut sembler être un contrôle excessif, mais vous êtes-vous assuré que vous avez le fichier .lib et le fichier .h correspondant pour la bibliothèque dans le même répertoire? Beaucoup de gens ont le .lib mais manque le .h pour la lib

je tombe sur ce problème quand j'oublie de le faire ou l'autre de ces deux, que ce soit dans CMake ou C++ visuelle par VStudio

+0

Oui, j'ai les fichiers .h et .lib dans le dossier framboise. Changer aussi <> pour "" donne la même erreur. – ksivakumar