web-dev-qa-db-fra.com

g ++ ld: symbole (s) non trouvé (s) pour l'architecture x86_64

J'essaie de compiler le Sam Hare code Struck .

J'utilise Mac OSX10.9, l'opencv 2.4.6 et Eigen 2.0.17.

Les en-têtes Eigen et OpenCV sont stockés dans/opt/local/include tandis que OPENVV dylib dans/opt/local/lib.

J'ai modifié le Makefile de Hare pour travailler sur ce dossier. Quand je tape make sur le terminal:

g++ -L/opt/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc src/Config.o src/Features.o src/HaarFeature.o src/HaarFeatures.o src/HistogramFeatures.o src/ImageRep.o src/LaRank.o src/MultiFeatures.o src/RawFeatures.o src/Sampler.o src/Tracker.o src/main.o src/GraphUtils/GraphUtils.o -o struck

Je reçois ces erreurs:

Undefined symbols for architecture x86_64:  
"cv::namedWindow(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
int)", referenced from:
      _main in main.o   "cv::split(cv::Mat const&, std::__1::vector<cv::Mat, std::__1::allocator<cv::Mat> >&)",
referenced from:
      ImageRep::ImageRep(cv::Mat const&, bool, bool, bool) in ImageRep.o   "cv::imread(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
int)", referenced from:
      _main in main.o   "cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&,
cv::_InputArray const&)", referenced from:
      LaRank::Debug() in LaRank.o
      Tracker::Debug() in Tracker.o
      _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see
invocation)

Des idées? Merci!

35
mbPro

J'ai eu un avertissement/erreur/échec similaire lorsque j'essayais simplement de créer un exécutable à partir de deux fichiers objet différents (main.o et add.o). J'utilisais la commande:

gcc -o exec main.o add.o

Mais mon programme est un programme C++. En utilisant le g++ le compilateur a résolu mon problème:

g++ -o exec main.o add.o

J'ai toujours eu l'impression que gcc pouvait résoudre ces problèmes tout seul. Apparemment non. J'espère que cela aide quelqu'un d'autre à la recherche de cette erreur.

25
Nate

a finalement résolu mon problème.

J'ai créé un nouveau projet dans XCode avec les sources et changé la bibliothèque standard C++ de libc ++ par défaut en libstdc ++ comme dans this et this .

9
mbPro