Я пытаюсь запустить программу с открытым исходным кодом, которая использует, среди прочего, OpenCV.Сначала я столкнулся с undefined reference
ошибками, которые изменились на
Пакет opencv не был найден в пути поиска pkg-config
ошибки, которые затем вернулись к undefined reference
проблемам,Детали на заднем плане.Команда компиляции и сообщение об ошибке также включены.
- My исходная ошибка был длинный список ошибок 'undefined reference'.Я не мог разрешить это, но заметил, на этом StackOverflow вопрос , что, если я попробую это на Ubuntu вместо Windows, я мог бы попытаться добавить
pkg-config --cflags --libs opencv
. - Тогда моя ошибка компиляции изменилась с
undefined reference to ...
на Package opencv was not found in the pkg-config search path
и т. Д. - Принято решение ( Вопрос StackOverflow ), как представляется, для создания файла с именем opencv.pc, скопируйте его в
/usr/local/lib/pkgconfig
, чтобы включить его в некоторые строки, затем добавьте некоторые другие строки в bashrc.Однако когда я создал файл opencv.pc
, он просто создал пустой текстовый файл с именем opencv.pc
вместо действительного .pc
файла.Кроме того, каталог /usr/local/lib/pkgconfig
не существует на моем компьютере, хотя pkg-config
определенно установлен.
Я не мог заставить это решение работать, поэтому я продолжал искать и думал, что, возможно, часть проблемы заключалась в том, что вместо установки OpenCV из терминала я скопировал егос моего компьютера Windows с USB-ключом.Поэтому я попытался установить его с помощью терминала, используя следующую строку: sudo apt-get install libopencv-dev
.Теперь моя ошибка снова
неопределенные ссылки
, несмотря на тот факт, что у меня все еще есть pkg-config ...
в команде компиляции.Обратите внимание, что не только OpenCV имеет неопределенные ссылки, но и файлы, относящиеся к программе с открытым исходным кодом, которую я пытаюсь запустить (это называется «PuRe», алгоритм отслеживания взгляда).
g++ -I /home/binny/Desktop/opencv/build/include/opencv2/imgcodecs -std=c++11 -I /home/binny/Desktop/example/ -I /home/binny/Desktop/opencv/build/include/ -I /home/binny/Desktop/winrt_x86_msvc2017/include/ -I /home/binny/Desktop/winrt_x86_msvc2017/include/QtCore /home/binny/Desktop/example/main.cpp `pkg-config --cflags --libs opencv
/tmp/ccLpYSrK.o: In function `main':
main.cpp:(.text+0x49): undefined reference to `cv::imread(cv::String const&, int)'
main.cpp:(.text+0x218): undefined reference to `PuRe::PuRe()'
main.cpp:(.text+0x238): undefined reference to `PuRe::run(cv::Mat const&, Pupil&)'
main.cpp:(.text+0x2cd): undefined reference to `cv::ellipse(cv::_InputOutputArray const&, cv::RotatedRect const&, cv::Scalar_<double> const&, int, int)'
main.cpp:(.text+0x322): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'
main.cpp:(.text+0x35e): undefined reference to `PuRe::~PuRe()'
main.cpp:(.text+0x484): undefined reference to `PuRe::~PuRe()'
/tmp/ccLpYSrK.o: In function `cv::String::String(char const*)':
main.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x54): undefined reference to `cv::String::allocate(unsigned long)'
/tmp/ccLpYSrK.o: In function `cv::String::~String()':
main.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): undefined reference to `cv::String::deallocate()'
/tmp/ccLpYSrK.o: In function `cv::String::operator=(cv::String const&)':
main.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28): undefined reference to `cv::String::deallocate()'
collect2: error: ld returned 1 exit status