opencv库作为第三方库

在编译一个依赖opencv库的库时,报出以下错误:

undefined reference to symbol ‘_ZN2cv6imreadERKNS_6StringEi’

libopencv_core.so.2.4: error adding symbols: DSO missing from command line

error: collect2: error: ld returned 1 exit status

分析:

该平台装有两个opencv库,一个2.4.8版本,一个3.3.1版本,其中2.4.8的.so文件在/usr/lib/x86_64-linux-gnu目录下,在CMakeLists.txt文件里面语句FIND_PACKAGE(OpenCV REQUIRED),找到以下两个变量的路径均是默认的2.4.8的版本目录。

${OpenCV_INCLUDE_DIRS}

${OpenCV_LIBS}

如果需要依赖3.3.1的版本,则需注释掉语句FIND_PACKAGE(OpenCV REQUIRED),并添加:

SET(OpenCV_INCLUDE_DIRS /usr/local/opencv321/include)

SET(OpenCV_LIBS /usr/local/opencv321/lib)

设置依赖的opencv库的路径。

但是这种操作经常会引发上述错误。

解决:

在需要opencv库的地方,直接添加完整路径下的.so文件即可。

ADD_EXECUTABLE(main_pipeline src/main_pipeline.cpp)
TARGET_LINK_LIBRARIES(main_pipeline vio /usr/local/lib/libgtsam.so ${DLib_LIBS} ${DBoW2_LIBS} /usr/local/opencv321/lib/libopencv_core.so
/usr/local/opencv321/lib/libopencv_highgui.so
/usr/local/opencv321/lib/libopencv_imgcodecs.so
/usr/local/opencv321/lib/libopencv_video.so
/usr/local/opencv321/lib/libopencv_calib3d.so
/usr/local/opencv321/lib/libopencv_features2d.so
/usr/local/opencv321/lib/libopencv_flann.so)

猜你喜欢

转载自blog.csdn.net/u013925378/article/details/82688074