Ошибка ссылки при компиляции примера программы фильтра opencv kalman - PullRequest
0 голосов
/ 27 апреля 2019

В настоящее время я пытаюсь собрать и запустить пример программы фильтра kalman, найденной на https://docs.opencv.org/trunk/de/d70/samples_2cpp_2kalman_8cpp-example.html#a12

Когда я пытаюсь скомпилировать программу, я получаю следующий вывод:

g++ -o  kalman kalman.o -lopencv_core -lopencv_tracking -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio -lopencv_objdetect
/usr/bin/ld: kalman.o: undefined reference to symbol '_ZN2cv12KalmanFilter7predictERKNS_3MatE'
/usr/bin/ld: /usr/lib/libopencv_video.so.4.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:9: kalman] Error 1

Мне кажется, что в моем файле Makefile отсутствует библиотека ссылок, но я просмотрел всюду онлайн и, похоже, не могу ее найти.

Я попытался изменить порядок библиотек ссылок в переменной LIBS моего Makefile. Сначала я попытался поместить -lopencv_tracking (где я предполагаю, что функции фильтра Калмана) в конце списка ссылок, а затем попытался поместить его вторым в списке (прямо перед -lopencv_core). Оба дали одинаковую ошибку ссылки.

Вот Makefile, который я использую

CC=g++
TARGET=kalman
SRC=kalman.cpp
LIBS=-lopencv_core -lopencv_tracking -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_videoio -lopencv_objdetect
OBJ=kalman.o
%.o: %.cpp
        $(CC) -c -o $@ $< $(LIBS)
kalman: $(OBJ)
        $(CC) -o  $@ $^ $(LIBS)

Программа должна работать правильно, без ошибок

1 Ответ

0 голосов
/ 27 апреля 2019

Я нашел ответ, мне не хватало -lopencv_video в моих LIBS

...