Ошибка сборки OpenCV - PullRequest
       6

Ошибка сборки OpenCV

0 голосов
/ 19 февраля 2012

Если это не уместно, хотелось бы узнать об источнике и исправить ошибку, которую я получаю при сборке OpenCV под Cygwin (в Windows 7 64 бит).

У меня установлен Cygwin с пакетами MingW-pthread, установленными в этой установке cygwin.

Я скачал OpenCV вер. 2.3.1 исходный пакет.

EDIT:

После некоторых настроек и изменений в процессе сборки OpenCV теперь работает нормально. Но когда я скомпилирую простой тестовый код openCV (исходный код C), как показано ниже, он дает много ошибок компоновщика неопределенных ссылок на многие основные функции openCV. Я попытался правильно установить LD_LIBRARY_PATH, но ошибки все равно продолжаются:

cc -L/usr/local/lib -I/usr/local/include/opencv2 -/usr/local/include/opencv -lop                                                                                                                encv_imgproc -lopencv_highgui -lopencv_video -lopencv_calib3d test1.c -o test_op                                                                                                                encv
cc: unrecognized option '-/usr/local/include/opencv'
/tmp/ccfEqFK0.o:test1.c:(.text+0x9dd): undefined reference to `_cvFree_'
/tmp/ccfEqFK0.o:test1.c:(.text+0xa4e): undefined reference to `_cvFree_'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb44): undefined reference to `_cvGetRows'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb6f): undefined reference to `_cvGetCols'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb82): undefined reference to `_cvReleaseMat'
/tmp/ccfEqFK0.o:test1.c:(.text+0xcd2): undefined reference to `_cvAddS'

/tmp/ccfEqFK0.o:test1.c:(.text+0x1137): undefined reference to `_cvRead'
/tmp/ccfEqFK0.o:test1.c:(.text+0x11e1): undefined reference to `_cvLoadImage'
/tmp/ccfEqFK0.o:test1.c:(.text+0x129d): undefined reference to `_cvCreateImage'
/tmp/ccfEqFK0.o:test1.c:(.text+0x12dd): undefined reference to `_cvResize'
/tmp/ccfEqFK0.o:test1.c:(.text+0x12f1): undefined reference to `_cvNamedWindow'
/tmp/ccfEqFK0.o:test1.c:(.text+0x1305): undefined reference to `_cvNamedWindow'
                                           '
/tmp/ccfEqFK0.o:test1.c:(.text+0x13ad): undefined reference to `_cvDestroyWindow                                                                            

... ... еще много неопределенных ссылок.

                              '
collect2: ld returned 1 exit status
Makefile:10: recipe for target `test_opencv' failed
make: *** [test_opencv] Error 1

EDIT

Ниже сообщение все еще там, но это не ошибка, а сообщение во время процесса сборки.

* Затем при сборке OpenCV под Cygwin, когда я делаю make, выдается сообщение об ошибке. c ++: нераспознанная опция '-pthread' [36%] Сборка объектных модулей CXX / highgui / CMakeFiles / opencv_highgui.dir / src / grfmt_sunras.o *

и для многих других файлов я вижу ту же ошибку c++: unrecognized option '-pthread'

Я хотел бы знать, если у кого-то есть опыт создания openCV под Cygwin, как запустить OpenCV под cygwin? , Теперь я знаю, что есть настройка Windows для OpenCV, но это не то, что мне нужно.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

У ваших аргументов строки cmd есть несколько проблем. Кажется, что он не был полностью вставлен в ваш вопрос (некоторые проблемы с отступами наводят на мысль).

  • Одна очевидная ошибка может быть легко идентифицирована, так как CC говорит вам об этом: cc: unrecognized option '-/usr/local/include/opencv':

При добавлении каталогов заголовков в командной строке необходимо указать каждый из них с помощью -I. Обратите внимание, что вам не удалось сделать это с: -/usr/local/include/opencv. Это должно быть -I/usr/local/include/opencv

  • Вы также, кажется, пропустили -lopencv_core в строке cmd

В будущем используйте pkg-config (если он правильно настроен), чтобы помочь вам включить заголовочные файлы и библиотеки opencv:

cc test.c -o test_op `pkg-config --cflags --libs opencv` -lop  
0 голосов
/ 26 февраля 2012

Спасибо за указатели: Я обнаружил, что проблема заключалась в следующем:

В моем Makefile моего тестового приложения openCV я связывался с библиотеками импорта (* .a). Какая была проблема.

Проблемный Makefile связывался с файлами

-l:/usr/local/lib/libopencv_core.dll.a ...etc...

Я изменил это, чтобы связать с фактическими библиотеками DLL, затем он работал (связывался) нормально, без каких-либо ошибок, как указано выше.

Изменения в Makefile выглядит:

LIBS = -l:/usr/local/bin/cygopencv_core-2.3.dll -l:/usr/local/bin/cygopencv_imgproc-2.3.dll -l:/usr/local/bin/cygopencv_highgui-2.3.dll -l:/usr/local/bin/cygopencv_video-2.3.dll -l:/usr/local/bin/cygopencv_calib3d-2.3.dll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...