在运行KalmanFilter的时候需要用到opencv的库,按照之前的方式在CMakeLists.txt中:
target_link_libraries(KalmanFilter
${OPENCV_LIBS}
)
但是发现make的时候找不到opencv,报错如下:
main.cpp:(.text+0x1eb): undefined reference to cv::KalmanFilter::KalmanFilter(int, int, int, int)' main.cpp:(.text+0x245): undefined reference to
cv::Mat::zeros(int, int, int)’
main.cpp:(.text+0x31a): undefined reference to cv::randn(cv::_InputOutputArray const&, cv::_InputArray const&, cv::_InputArray const&)' main.cpp:(.text+0x44f): undefined reference to
cv::setIdentity(cv::InputOutputArray const&, cv::Scalar const&)’
…
以上省略相似的opencv undefined错误:
查找资料的时候发现,是因为在编译的时候,编译的参数配置不正确,并没有指定Lib目录的路径,导致编译的时候,静态链接库无法找到,可以通过添加上依赖的方式的解决,直接使用g++的命令:
g++ main.cpp -o test `pkg-config --cflags --libs opencv`
生成test可执行文件,通过。但是毕竟是工程化的东西,还是希望在CMakeLists里面更新下从而解决问题。
首先,通过pkg-config --cflags --libs opencv
来查找opencv的库,显示如下:
-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_cudabgsegm -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_dnn -lopencv_ml -lopencv_shape -lopencv_stitching -lopencv_cudafeatures2d -lopencv_superres -lopencv_cudacodec -lopencv_videostab -lopencv_cudaoptflow -lopencv_cudalegacy -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_photo -lopencv_imgcodecs -lopencv_cudawarping -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_video -lopencv_objdetect -lopencv_imgproc -lopencv_flann -lopencv_cudaarithm -lopencv_core -lopencv_cudev
将上面的内容加入到CMakeLists里面,如下所示:
target_link_libraries(KalmanFilter -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_cudabgsegm -lopencv_cudaobjdetect -lopencv_cudastereo -lopencv_dnn -lopencv_ml -lopencv_shape -lopencv_stitching -lopencv_cudafeatures2d -lopencv_superres -lopencv_cudacodec -lopencv_videostab -lopencv_cudaoptflow -lopencv_cudalegacy -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_photo -lopencv_imgcodecs -lopencv_cudawarping -lopencv_cudaimgproc -lopencv_cudafilters -lopencv_video -lopencv_objdetect -lopencv_imgproc -lopencv_flann -lopencv_cudaarithm -lopencv_core -lopencv_cudev)
终于编译通过,写个博客给自己备忘:)
[参考:(https://blog.csdn.net/wang7807564/article/details/78416809)]
up_up_Rui 原创文章 8获赞 7访问量 385 关注 私信 展开阅读全文