2016-06-02 2 views
0

Я хочу кросс-компиляции моей программы, так что я написал Makefile:неопределенная ссылка на `сорта :: groupRectangles`

CC= arm-buildroot-linux-gnueabihf-g++ 
CFLAGS= -W -Wall -v -O3 -ftree-vectorize -std=c++0x 
OPENCV= -I '/home/slim/Desktop/buildroot-2016.02/output/staging/usr/include/' -L '/home/slim/Desktop/buildroot-2016.02/output/staging/usr/lib' -lopencv_core -lopencv_highgui -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_imgproc -lopencv_video 
BIN = ./bin/ 

all: detection.o Ctracker.o HungarianAlg.o Kalman.o 
    $(CC) $(CFLAGS) $(BIN)detection.o $(BIN)Ctracker.o $(BIN)HungarianAlg.o $(BIN)Kalman.o -o dect $(OPENCV) 



detection.o: Ctracker.h detection.cpp 
    $(CC) $(CFLAGS) $(OPENCV) -c detection.cpp -o $(BIN)detection.o 


Ctracker.o: Ctracker.h HungarianAlg.h Kalman.h 
    $(CC) $(CFLAGS) $(OPENCV) -c Ctracker.cpp -o $(BIN)Ctracker.o 

HungarianAlg.o: HungarianAlg.h 
    $(CC) $(CFLAGS) $(OPENCV) -c HungarianAlg.cpp -o $(BIN)HungarianAlg.o 

Kalman.o: HungarianAlg.h 
    $(CC) $(CFLAGS) -c Kalman.cpp -o $(BIN)Kalman.o 


clean: 
    rm $(BIN)* 

Я добавил все линкер из моих библиотек в Makefile, но когда я запускаю сделать I получил эти ошибки, но я не понимаю, как это исправить:

./bin/detection.o: In function `drawBoundingBox(std::vector<std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >, std::allocator<std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > > > >)': 
detection.cpp:(.text+0x46c): undefined reference to `cv::groupRectangles(std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > >&, int, double)' 
collect2: error: ld returned 1 exit status 
make: *** [all] Error 1 

ответ

1

Первое, что нужно понять, это то, что вы получаете сообщение об ошибке компоновщика.

Обратите внимание, что вы пытаетесь использовать cv::groupRectangles, и компоновщик не удается связать его. Согласно , он является частью модуля Обнаружения объекта.

Я искал в Интернете «Учебники по обнаружению объектов OpenCV», и все они связывают opencv_objdetect в своих файлах. Поэтому попробуйте добавить -lopencv_objdetect в третью строку в вашем файле makefile, где вы определяете переменную OPENCV и смотрите, поможет ли это.

Смежные вопросы