Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OpenCV] Undefined Reference

Ostatnio zmodyfikowano 2016-12-23 14:56
Autor Wiadomość
Łakasabasz
Temat założony przez niniejszego użytkownika
[OpenCV] Undefined Reference
» 2016-12-19 18:56:09
Witam,

Pobrałem sobie bibliotekę OpenCv 3.1 i spróbowałem skompilować kod skopiowany z http://forbot.pl/blog/artykuly/programowanie/opencv-2-wykrywanie-obiektow-id4888 dla sprawdzenia czy działa. Niestety, kod kompilował się ładnie, bez jednego ostrzeżenia, ale gdy linker miał dolinkować biblioteki wywalił masę błędów typu Undefined reference.
Zabrałem się więc za cmake i spróbowałem skompilować bibliotekę pod MinGW GCC. Napisałem na forum temat, bo miałem z tym problemy, ale na innych stronach zobaczyłem wyjaśnienie i zamknąłem temat. Skompilowałem sobie biblioteki pod gcc i spróbowałem ponownie z tym samym skutkiem (Undefined reference).

Pracuje na Code::Blocks i mam kompilator w wersji 5.3.0 MinGW.
Proszę o pomoc.
P-155195
DejaVu
» 2016-12-21 17:30:16
Jak już chcesz użyć biblioteki w swojej aplikacji to razem z nią trzeba również dolinkować n-bibliotek z których OpenCV korzysta. Innymi słowy. Oprócz zapisu
-l opencv
 trzeba jeszcze dołączyć kilka innych bibliotek.

Przykład: http://stackoverflow.com​/questions/14676018​/install-opencv-and-compile-c-program-using-gcc
P-155251
Łakasabasz
Temat założony przez niniejszego użytkownika
» 2016-12-22 19:05:51
Dziękuję, ale problem pozostał...

Gdy kompiluje w Code::Blocks przy użyciu ustawień, powstaje instrukcja:
mingw32-g++.exe -LC:\libarys\opencv\build\lib -LC:\libarys\SFML-2.4.1\bin\lib -o "bin\Release\Mysz bezprzewodowa.exe" obj\Release\main.o  -s -static  -lopencv_features2d310.dll -lopencv_flann310.dll -lopencv_objdetect310.dll -lopencv_video310.dll -lopencv_calib3d310.dll -lopencv_imgproc310.dll -lopencv_core310.dll -lopencv_ml310.dll -lopencv_photo310.dll -lopencv_stitching310.dll -lopencv_videostab310.dll -lsfml-main -lsfml-system-s -lopencv_highgui310.dll

Podczas linkowania pojawia się problem:
obj\Release\main.o:main.cpp:(.text.startup+0x50): undefined reference to `cv::VideoCapture::VideoCapture(int)'
obj\Release\main.o:main.cpp:(.text.startup+0x4c8): undefined reference to `cv::VideoCapture::operator>>(cv::Mat&)'
obj\Release\main.o:main.cpp:(.text.startup+0xa9b): undefined reference to `cv::VideoCapture::release()'
obj\Release\main.o:main.cpp:(.text.startup+0xb0d): undefined reference to `cv::VideoCapture::~VideoCapture()'
obj\Release\main.o:main.cpp:(.text.startup+0xc5d): undefined reference to `cv::VideoCapture::~VideoCapture()'

Ten sam kod pojawia się z instrukcją, którą zobaczyłem w wyższym przykładzie, jak i bez niej. Więc problem nadal pozostaje.
P-155298
DejaVu
» 2016-12-22 20:55:04
http://stackoverflow.com​/questions/25876684​/opencv-3-0-undefined-reference-error

PS. Kolejność linkowania bibliotek ma znaczenie w narzędziach typu gcc, g++ itp.
P-155306
Łakasabasz
Temat założony przez niniejszego użytkownika
» 2016-12-23 14:56:51
Pozbyłem się nie potrzebnych bibliotek i kompiluje instrukcją:
mingw32-g++.exe -LC:\libarys\opencv\build\lib -LC:\libarys\SFML-2.4.1\bin\lib -o "bin\Release\Mysz bezprzewodowa.exe" obj\Release\main.o -static -lopencv_core310.dll -lopencv_video310.dll -lopencv_imgproc310.dll -lopencv_highgui310.dll -lsfml-main -lsfml-system-s

Skutek taki sam. undefined reference to `cv::VideoCapture::VideoCapture(int)

Edit: Mój błąd, zapomniałem do biblioteki opencv_video310.dll dodać litery io, powinno być opencv_videoio310.dll. Teraz wszystko ładnie się kompiluje. Dziękuję.
P-155335
« 1 »
  Strona 1 z 1