解决Linux下 C++ opencv 库文件的链接问题

errors:

/home/tonyyan/Documents/main.cpp:108: undefined reference to `cv::VideoCapture::read(cv::_OutputArray const&)'
/home/tonyyan/Documents/main.cpp:130: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
/home/tonyyan/Documents/main.cpp:131: undefined reference to `cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
/home/tonyyan/Documents/main.cpp:134: undefined reference to `cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
/home/tonyyan/Documents/main.cpp:135: undefined reference to `cv::waitKey(int)'
/home/tonyyan/Documents/main.cpp:69: undefined reference to `cv::VideoCapture::~VideoCapture()'
/home/tonyyan/Documents/main.cpp:68: undefined reference to `cv::Mat::~Mat()'
/home/tonyyan/Documents/main.cpp:36: undefined reference to `cv::Mat::~Mat()'
/home/tonyyan/Documents/main.cpp:69: undefined reference to `cv::VideoCapture::~VideoCapture()'
/home/tonyyan/Documents/main.cpp:68: undefined reference to `cv::Mat::~Mat()'
/home/tonyyan/Documents/main.cpp:36: undefined reference to `cv::Mat::~Mat()'

solution:

add the following arguments to g++:

-lopencv_core -lopencv_imgproc -lopencv_highgui

in tasks.json of vscode:

                "-lopencv_core",
                "-lopencv_imgproc",
                "-lopencv_highgui",

  

reference: 

https://stackoverflow.com/questions/24337932/cannot-get-opencv-to-compile-because-of-undefined-references

补充 error:

9: undefined reference to `cv::VideoCapture::VideoCapture()'

solution:

"-lopencv_videoio",

总之,缺什么就链接什么库文件。

原文地址:https://www.cnblogs.com/mrlonely2018/p/14889254.html