记录opencv库的调用错误
1. 背景
系统:Ubuntu18.06
环境:cmake-3.10, gcc-7.5.0
目的:调用一个动态链接库a.so,该库引用了opencv-2.4.5相关库.
2. 问题
上述a.so历史久远,且不方便获取源码,调用时提示opencv相关函数undefined
Line1: undefined reference to cv::KalmanFilter::KalmanFilter(int, int, int, int)' Line2: undefined reference to
cv::CascadeClassifier::CascadeClassifier()’
Line3: undefined reference to cv::KalmanFilter::predict(cv::Mat const&)' Line4: undefined reference to
cv::CascadeClassifier::~CascadeClassifier()’
Line5: undefined reference to cv::_InputArray::_InputArray(cv::Mat const&)' Line6: undefined reference to
cv::CascadeClassifier::load(std::string const&)’
3. 解决方法
问题1及方法. 链接库a.so与opencv库顺序错误
a.so依赖opencv_x.so, 编译时,a.so应该在前,opencv_x.so在后,类似下述命令:
g++ -o test ./src/test.cpp