2017-06-12 2 views
1

J'ai du code C++ qui est placé dans un répertoire de bureau et qui a des appels à caffe (avec opencv 3.1) et eigen. Lors de la compilation du code, je reçois des références non définies aux méthodes caffe.Compilation de code C++ avec caffe et Eigen

J'utilise la commande suivante pour compiler le code

g++ -I ../eigen-eigen-b9cd8366d4e8/ -I /path_to_caffe-rc5/include/ -I/usr/local/include/opencv -I/usr/local/include/opencv2 -I /path_to_caffe-rc5/affe-rc5/distribute/include/ -L/usr/local/lib/ -g -o binary test2.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_stitching -std=c++0x -lboost_system -lglog -DUSE_OPENCV -lopencv_imgcodecs -lgflags -std=c++11 

Je reçois le message suivant d'erreur:

/tmp/cc4q0bWJ.o: In function `Detector::Detector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': 
/path_to_my file/test2.cpp:86: undefined reference to `caffe::Net<float>::Net(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, caffe::Phase, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*)' 
/path_to_my file/test2.cpp:87: undefined reference to `caffe::Net<float>::CopyTrainedLayersFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
/tmp/cc4q0bWJ.o: In function `Detector::Detect(cv::Mat const&)': 
/path_to_my file/test2.cpp:105: undefined reference to `caffe::Blob<float>::Reshape(int, int, int, int)' 
/path_to_my file/test2.cpp:107: undefined reference to `caffe::Net<float>::Reshape()' 
/path_to_my file/test2.cpp:114: undefined reference to `caffe::Net<float>::Forward(float*)' 
/path_to_my file/test2.cpp:118: undefined reference to `caffe::Blob<float>::cpu_data() const' 
+2

Inclure le drapeau '-lcaffe' – Jovasa

+0

>/usr/bin/ld: impossible de trouver -lcaffe > collect2: erreur: ld a renvoyé 1 statut de sortie – MIRMIX

+0

quelle version de caffe vous avez ... avez-vous construit opencv avec open_contrib? – Eliethesaiyan

Répondre

1

Comme Jovasa et Shai dit que le problème a été résolu par l'ajout suivant le drapeau et le chemin caffelibrary à la commande de l'éditeur de liens

-L/path/to/caffe -lcaffe