未定义的引用cv :: imread链接错误

时间:2017-04-27 23:09:27

标签: c++ opencv linker-errors caffe undefined-reference

我正在尝试安装修改后的caffe版本作为此库安装的一部分:https://github.com/wasidennis/ObjectFlow/tree/master/caffe-cedn-dev 我在ubuntu 14.04上,正在使用caffe网站上列出的cmake安装。

我已经安装了matlab&在路径中有mex文件。

cmake ..之后我执行make all并收到此错误:

Linking CXX executable caffe
../lib/libcaffe.a(io.cpp.o): In function `caffe::ReadImageToDatum(std::string const&, int, int, int, bool, caffe::Datum*)':
io.cpp:(.text+0x67d): undefined reference to `cv::imread(cv::String const&, int)'

../lib/libcaffe.a(window_data_layer.cpp.o): In function `caffe::WindowDataLayer<float>::InternalThreadEntry()':
window_data_layer.cpp:(.text._ZN5caffe15WindowDataLayerIfE19InternalThreadEntryEv[_ZN5caffe15WindowDataLayerIfE19InternalThreadEntryEv]+0x44b): undefined reference to `cv::imread(cv::String const&, int)'

../lib/libcaffe.a(window_data_layer.cpp.o): In function `caffe::WindowDataLayer<double>::InternalThreadEntry()':
window_data_layer.cpp:(.text._ZN5caffe15WindowDataLayerIdE19InternalThreadEntryEv[_ZN5caffe15WindowDataLayerIdE19InternalThreadEntryEv]+0x446): undefined reference to `cv::imread(cv::String const&, int)'

collect2: error: ld returned 1 exit status
make[2]: *** [tools/caffe] Error 1
make[1]: *** [tools/CMakeFiles/caffe.bin.dir/all] Error 2
make: *** [all] Error 2

关注https://github.com/BVLC/caffe/issues/1276后,我查看pkg-config --cvflags opencv的输出-I/usr/local/include/opencv -I/usr/local/include

这与安装OpenCV安装标头的位置相同。 (我不确定它的因果关系。)OpenCV 3.1和2.4都转到那些文件 - 我尝试安装它们并在它们之间切换我只是移动opencvopencv2标题文件夹到我使用其他opencv时到tmp文件夹。我认为这可能是错误的根源,因为我不知道如何判断我的程序使用的OpenCV版本是肯定的。

更具体地说,我所做的是:

我将opencv_imgcodecs添加到Makefile

通过apt-get

安装opencv

通过apt-get remove

卸载opencv

安装了一个我不记得版本的opencv版本

安装3.1&amp; 2.4来自src&amp;如上所述切换了标题文件夹。

删除了opencv src&amp;的一个版本标题文件夹,我不知道如何查看它是什么版本。

从我开始检查时,python import cv2从版本3.1变为现在3.2-dev。

0 个答案:

没有答案