Ask Your Question

Revision history [back]

Undefined symbols for architecture x86_64

Hi there,

I'm trying to build traincascade in VSC using MacOS. I managed to get the annotation tool to work perfectly fine, but when I go to actually train my positive and negative images, I keep receiving the following error:

Undefined symbols for architecture x86_64: [build] "CvCascadeParams::scanAttr(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >)", referenced from: [build] _main in traincascade.cpp.o [build] "CvCascadeParams::CvCascadeParams()", referenced from: [build] _main in traincascade.cpp.o [build] CvCascadeClassifier::CvCascadeClassifier() in traincascade.cpp.o [build] "CvHOGFeatureParams::CvHOGFeatureParams()", referenced from: [build] std::__1::__compressed_pair_elem<cvhogfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o [build] "CvLBPFeatureParams::CvLBPFeatureParams()", referenced from: [build] std::__1::__compressed_pair_elem<cvlbpfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o [build] "CvCascadeClassifier::train(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >, int, int, int, int, int, CvCascadeParams const&, CvFeatureParams const&, CvCascadeBoostParams const&, bool, double)", referenced from: [build] _main in traincascade.cpp.o [build] "CvHaarFeatureParams::CvHaarFeatureParams()", referenced from: [build] std::__1::__compressed_pair_elem<cvhaarfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o [build] "CvCascadeBoostParams::scanAttr(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::allocator<char> >)", referenced from: [build] _main in traincascade.cpp.o [build] "CvCascadeBoostParams::CvCascadeBoostParams()", referenced from: [build] _main in traincascade.cpp.o [build] "CvCascadeImageReader::NegReader::NegReader()", referenced from: [build] CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o [build] "CvCascadeImageReader::PosReader::PosReader()", referenced from: [build] CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o [build] "CvCascadeImageReader::PosReader::~PosReader()", referenced from: [build] CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o [build] CvCascadeImageReader::~CvCascadeImageReader() in traincascade.cpp.o [build] "CvCascadeParams::printDefaults() const", referenced from: [build] _main in traincascade.cpp.o [build] "CvCascadeBoostParams::printDefaults() const", referenced from: [build] _main in traincascade.cpp.o [build] "vtable for CvParams", referenced from: [build] CvParams::~CvParams() in traincascade.cpp.o [build] NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. [build] ld: symbol(s) not found for architecture x86_64 [build] clang: error: linker command failed with exit code 1 (use -v to see invocation) [build] make: * [all] Error 2

Really not sure what's going on here. When I run pkg-config --cflags --libs opencv4 I get:

-I/usr/local/Cellar/opencv/4.5.0_1/include/opencv4 -L/usr/local/Cellar/opencv/4.5.0_1/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

Help please!

click to hide/show revision 2
None

updated 2020-10-25 12:10:19 -0600

berak gravatar image

Undefined symbols for architecture x86_64

Hi there,

I'm trying to build traincascade in VSC using MacOS. I managed to get the annotation tool to work perfectly fine, but when I go to actually train my positive and negative images, I keep receiving the following error:

Undefined symbols for architecture x86_64:
[build]   "CvCascadeParams::scanAttr(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "CvCascadeParams::CvCascadeParams()", referenced from:
[build]       _main in traincascade.cpp.o
[build]       CvCascadeClassifier::CvCascadeClassifier() in traincascade.cpp.o
[build]   "CvHOGFeatureParams::CvHOGFeatureParams()", referenced from:
[build]       std::__1::__compressed_pair_elem<cvhogfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) std::__1::__compressed_pair_elem<CvHOGFeatureParams, 1, false>::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o
[build]   "CvLBPFeatureParams::CvLBPFeatureParams()", referenced from:
[build]       std::__1::__compressed_pair_elem<cvlbpfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) std::__1::__compressed_pair_elem<CvLBPFeatureParams, 1, false>::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o
[build]   "CvCascadeClassifier::train(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >, int, int, int, int, int, CvCascadeParams const&, CvFeatureParams const&, CvCascadeBoostParams const&, bool, double)", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "CvHaarFeatureParams::CvHaarFeatureParams()", referenced from:
[build]       std::__1::__compressed_pair_elem<cvhaarfeatureparams, 1,="" false="">::__compressed_pair_elem(std::__1::__value_init_tag) std::__1::__compressed_pair_elem<CvHaarFeatureParams, 1, false>::__compressed_pair_elem(std::__1::__value_init_tag) in traincascade.cpp.o
[build]   "CvCascadeBoostParams::scanAttr(std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char="">, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "CvCascadeBoostParams::CvCascadeBoostParams()", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "CvCascadeImageReader::NegReader::NegReader()", referenced from:
[build]       CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o
[build]   "CvCascadeImageReader::PosReader::PosReader()", referenced from:
[build]       CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o
[build]   "CvCascadeImageReader::PosReader::~PosReader()", referenced from:
[build]       CvCascadeImageReader::CvCascadeImageReader() in traincascade.cpp.o
[build]       CvCascadeImageReader::~CvCascadeImageReader() in traincascade.cpp.o
[build]   "CvCascadeParams::printDefaults() const", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "CvCascadeBoostParams::printDefaults() const", referenced from:
[build]       _main in traincascade.cpp.o
[build]   "vtable for CvParams", referenced from:
[build]       CvParams::~CvParams() in traincascade.cpp.o
[build]   NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
[build] ld: symbol(s) not found for architecture x86_64
[build] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[build] make[2]: *** [opencv_traincascade] Error 1
[build] make[1]: *** [CMakeFiles/opencv_traincascade.dir/all] Error 2
[build] make: * *** [all] Error 2

2

Really not sure what's going on here. When I run pkg-config --cflags --libs opencv4 I get:

-I/usr/local/Cellar/opencv/4.5.0_1/include/opencv4 -L/usr/local/Cellar/opencv/4.5.0_1/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

Help please!