Не удалось связать библиотеку opencv во время компиляции - PullRequest
0 голосов
/ 25 сентября 2018

Я собрал opencv из исходного кода github, следуя этому уроку , все прошло успешно, но при компиляции моей программы-примера для рисования круга

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );

  // Draw a line 
  line( image, Point( 15, 20 ), Point( 70, 50), Scalar( 110, 220, 0 ),  2, 8 );
  imshow("Image",image);

  waitKey( 0 );
  return(0);
}

Я получаю ошибку.Согласно этому вопросу , мне нужно связать импортированные библиотеки при компиляции моей программы.Но в моей папке MinGW/lib нет такого файла, как opencv_core.a или opencv_highgui.a, вместо этого у меня есть libopencv_core400.dll.a и libopencv_highgui400.dll.a

enter image description here

так, если я попробую с опциями -lopencv_core и -lopencv_highgui

D:\Programs\CppProgramming>g++ -lopencv_core -lopencv_highgui -std=c++11 OpenCVTest.cpp
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: cannot find -lopencv_core
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: cannot find -lopencv_highgui
collect2.exe: error: ld returned 1 exit status

или даже с опциями -llibopencv_core400 и - llibopencv_highgui400

D:\Programs\CppProgramming>g++ -llibopencv_core400 -llibopencv_highgui400 -std=c++11 OpenCVTest.cpp
C:\Users\vivek\AppData\Local\Temp\ccnjHIL5.o:OpenCVTest.cpp:(.text+0x80): undefined reference to `cv::Mat::zeros(int, int, int)'
C:\Users\vivek\AppData\Local\Temp\ccnjHIL5.o:OpenCVTest.cpp:(.text+0x157): undefined reference to `cv::circle(cv::_InputOutputArray const&, cv::Point_<int>, int, cv::Scalar_<double> const&, int, int, int)'
C:\Users\vivek\AppData\Local\Temp\ccnjHIL5.o:OpenCVTest.cpp:(.text+0x1c2): undefined reference to `cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
C:\Users\vivek\AppData\Local\Temp\ccnjHIL5.o:OpenCVTest.cpp:(.text+0x1f6): undefined reference to `cv::waitKey(int)'
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: C:\Users\vivek\AppData\Local\Temp\ccnjHIL5.o: bad reloc address 0x12 in section `.text$_ZN2cv11_InputArrayC2Ev[__ZN2cv11_InputArrayC2Ev]'
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/5.1.0/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status

Я не уверенгде я иду не так.Где я могу найти эти библиотеки для успешной компоновки и компиляции моей программы?Любая помощь будет оценена.Спасибо ..

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Использование команды ниже в следующем порядке решило мою проблему компиляции

g++ -std=c++11 OpenCVTest.cpp -llibopencv_core400 -llibopencv_highgui400 -llibopencv_imgproc400
0 голосов
/ 25 сентября 2018

Если вы хотите использовать пользовательские заголовки или библиотеку и запускать их на кодовых блоках. Вам нужно добавить компиляторы в compiler.Попробуйте добавить все файлы lib settings -> compiler -> linker setting

Я думаю, что это решит вашу проблему.

https://i.stack.imgur.com/xPVrO.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...