2017-06-12 61 views
1

我有C++代码放在某个桌面目录中,并且有一些调用caffe(使用opencv 3.1)和eigen。编译代码时,我得到了caffe方法的未定义引用。用caffe和Eigen编译C++代码

我使用下面的命令来编译代码

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 

我收到以下错误信息:

/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

包含'-lcaffe'标志 – Jovasa

+0

>/usr/bin/ld:找不到-lcaffe > collect2:error:ld返回1退出状态 – MIRMIX

+0

哪个版本的caffe你有...你用open_contrib建立了opencv吗? – Eliethesaiyan

回答

1

由于JovasaShai说,问题是用添加以下标志和caffelibrary路径解决连接器命令

-L/path/to/caffe -lcaffe