Eclipse - undefined reference to opencv_core opencv_imgproc opencv_highgui opencv_objdetect
1. Build Failed
**** Incremental Build of configuration Debug for project webcam_NCS ****
make all
Building target: webcam_NCS
Invoking: GCC C++ Linker
......
undefined reference to cv::VideoCapture::open(int)
undefined reference to cv::VideoCapture::release()
undefined reference to cv::VideoCapture::read(cv::Mat&)
undefined reference to cv::resize(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)
undefined reference to cv::waitKey(int)
undefined reference to cv::VideoCapture::VideoCapture()
undefined reference to cv::VideoCapture::~VideoCapture()
undefined reference to cv::fastFree(void*)
......
2. Build Project
Project -> Properties -> C/C++ Build -> Settings -> GCC C++ Linker -> Libraries
Libraries (-l): opencv_core opencv_imgproc opencv_highgui opencv_objdetect
Library search path (-L)
opencv_core opencv_imgproc opencv_highgui opencv_objdetect 库不是 Linux 系统默认的库,连接时需要使用 opencv_core opencv_imgproc opencv_highgui opencv_objdetect。
源文件要包含头文件,在编译中要加 -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
参数。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
3. Build Project
4. compile.sh
#!/bin/bash
VIDEOIO=`pkg-config --libs opencv | grep "lopencv_videoio"`
if [ "$VIDEOIO" == "" ]
then
echo "no videoio library"
g++ -std=c++11 cpp/gender_age_lbp.cpp cpp/fp16.c -o cpp/gender_age_lbp -L/usr/local/lib -lmvnc -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
else
echo "found videoio library"
g++ -std=c++11 cpp/gender_age_lbp.cpp cpp/fp16.c -o cpp/gender_age_lbp -L/usr/local/lib -lmvnc -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -lopencv_videoio
fi
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/