undefined reference to `cv::Mat::~Mat()'

Viewed 50

I want to run through this demo, https://github.com/sea2357/HeDemo

I installed OpencV4.6 and made sure it was compiled and installed successfully, Since it can display images using g++ command line. enter image description here

But when I was compiling the HeDemo project, I got an error /home/caesar/code/HeDemo/knn.cpp:39: undefined reference to cv::Mat::Mat()' ... /usr/bin/ld: /usr/local/include/opencv4/opencv2/core/mat.hpp:3563: undefined reference to cv::Mat::~Mat()'

====================[ Build | main | Debug ]====================================
/home/caesar/clion-2020.1.3/bin/cmake/linux/bin/cmake --build /home/caesar/code/HeDemo/cmake-build-debug --target main -- -j 8
gmake[1]: Entering directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[2]: Entering directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[3]: Entering directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[3]: Leaving directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[3]: Entering directory '/home/caesar/code/HeDemo/cmake-build-debug'
[ 33%] Linking CXX executable main
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::read_mnist_image(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long)':
/home/caesar/code/HeDemo/knn.cpp:39: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:57: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:79: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::read_mnist_label(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long)':
/home/caesar/code/HeDemo/knn.cpp:86: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:99: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:116: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::test(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)':
/home/caesar/code/HeDemo/knn.cpp:148: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:161: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:161: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:161: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o:/home/caesar/code/HeDemo/knn.cpp:161: more undefined references to `cv::Mat::~Mat()' follow
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::recognize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)':
/home/caesar/code/HeDemo/knn.cpp:171: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:177: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:178: undefined reference to `cv::resize(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:179: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:180: undefined reference to `cv::threshold(cv::_InputArray const&, cv::_OutputArray const&, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:181: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:218: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:218: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:218: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:218: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:218: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o:/home/caesar/code/HeDemo/knn.cpp:218: more undefined references to `cv::Mat::~Mat()' follow
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::ciphertext_recognize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)':
/home/caesar/code/HeDemo/knn.cpp:255: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:261: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:262: undefined reference to `cv::resize(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:263: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:264: undefined reference to `cv::threshold(cv::_InputArray const&, cv::_OutputArray const&, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:265: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:355: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:355: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:355: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:355: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:355: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o:/home/caesar/code/HeDemo/knn.cpp:355: more undefined references to `cv::Mat::~Mat()' follow
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `KNN::ciphertext_recognize_compressed(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/home/caesar/code/HeDemo/knn.cpp:393: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:399: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:400: undefined reference to `cv::resize(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:401: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:402: undefined reference to `cv::threshold(cv::_InputArray const&, cv::_OutputArray const&, double, double, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:403: undefined reference to `cv::Mat::zeros(int, int, int)'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:506: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:506: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:506: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:506: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /home/caesar/code/HeDemo/knn.cpp:506: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o:/home/caesar/code/HeDemo/knn.cpp:506: more undefined references to `cv::Mat::~Mat()' follow
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `cv::Mat::row(int) const':
/usr/local/include/opencv4/opencv2/core/mat.inl.hpp:597: undefined reference to `cv::Mat::Mat(cv::Mat const&, cv::Range const&, cv::Range const&)'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `cv::MatExpr::operator cv::Mat() const':
/usr/local/include/opencv4/opencv2/core/mat.inl.hpp:3077: undefined reference to `cv::Mat::Mat()'
/usr/bin/ld: /usr/local/include/opencv4/opencv2/core/mat.inl.hpp:3080: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: CMakeFiles/main.dir/knn.cpp.o: in function `cv::MatExpr::~MatExpr()':
/usr/local/include/opencv4/opencv2/core/mat.hpp:3563: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /usr/local/include/opencv4/opencv2/core/mat.hpp:3563: undefined reference to `cv::Mat::~Mat()'
/usr/bin/ld: /usr/local/include/opencv4/opencv2/core/mat.hpp:3563: undefined reference to `cv::Mat::~Mat()'
collect2: error: ld returned 1 exit status
gmake[3]: *** [CMakeFiles/main.dir/build.make:101: main] Error 1
gmake[3]: Leaving directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/main.dir/all] Error 2
gmake[2]: Leaving directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/main.dir/rule] Error 2
gmake[1]: Leaving directory '/home/caesar/code/HeDemo/cmake-build-debug'
gmake: *** [Makefile:118: main] Error 2

I can run through the demo showing the images, so I think cmakelist.txt is not written properly The include directory in cmakelist.txt is configured So I think maybe the dynamic library is not set up properly But I do not know how to write the right, check some data did not solve

0 Answers
Related