Компиляция магистрали OpenCV SVN в Windows — ошибка в highgui / libVideoInput

#qt #opencv #makefile #compiler-errors #cmake

#qt #opencv #makefile #ошибки компилятора #cmake

Вопрос:

Я знаю, что есть несколько вопросов по этому поводу, но ни один из них не показал мне, что я могу сделать против ошибки, которую я получаю.

Используя это руководство, я уже смог скомпилировать текущую версию OpenCV (2.2), используя это руководство и cmake. Итак, релиз работает нормально, и я могу написать код, используя его в Qt. Поэтому мне нужно включить WITH_QT и создать самому.

Но, к сожалению, я обнаружил, что версия 2.2 поддерживает не все типы камер (поскольку я хотел бы получать поток камеры с веб-камеры 720p). Я читал, что это исправлено в последней версии магистрали svn.

Итак, я проверил новейшую магистраль svn и снова запустил Cmake, создал новую папку, выбрал исходные файлы, MinGW скомпилировал со ссылками на g .exe и qcc.exe, настроил и включил «WITH_QT» и сгенерировал необходимые Make-файлы.

Затем я запустил Windows Powershell от имени администратора и попытался скомпилировать с помощью «mingw32-make»… но на 56% он внезапно выходит из строя с этим:

 [ 56%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_sunras.obj
[ 56%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_tiff.obj
Linking CXX shared library ....binlibopencv_highgui220d.dll
Creating library file: ....liblibopencv_highgui220d.dll.a
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
ee): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
104): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2a6): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2d4): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2fe): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
314): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
4b6): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
4e4): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1b41): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1b5a): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1bb4): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1c03): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1c88): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
1ca7): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2265): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
228d): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2318): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
2337): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
28f5): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
291d): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
38a0): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
38df): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
406b): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
40a3): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
4211): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
42ec): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
6cf8): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
6d17): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
6e1e): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
6e3e): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
7002): undefined reference to `_Unwind_SjLj_Resume'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
70b4): undefined reference to `__gxx_personality_sj0'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
70cd): undefined reference to `_Unwind_SjLj_Register'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
7111): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
742e): undefined reference to `_Unwind_SjLj_Unregister'
C:workspaceopencvOpenCV_SVNmoduleshighgui....3rdpartylib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text 0x
7501): undefined reference to `_Unwind_SjLj_Resume'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [bin/libopencv_highgui220d.dll] Error 1
mingw32-make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
mingw32-make: *** [all] Error 2
  

Похоже, что-то пошло не так при компиляции libVideoInput…
кто-нибудь знаком с этой ошибкой? Как я могу это исправить? Нужно ли мне устанавливать что-либо специальное перед этим?

Было бы здорово, если бы кто-нибудь мог мне помочь! Спасибо!

Комментарии:

1. Вы пробовали то, что предлагается здесь? opencv-users.1802565.n2.nabble.com /…

2. Спасибо за ссылку… Я только что попробовал это … скопировал libvideoinput.a из исходного кода версии 2.2 в загруженную магистраль svn и скомпилировал, но с той же ошибкой… Я даже попробовал версию 2.1 … без изменений…

3. Я также только что попытался скомпилировать версию 2.1, но я получаю ту же ошибку, что и с магистралью 2.2 SVN … Хотя версия 2.2 работает…

Ответ №1:

Теоретически, устанавливая OpenCV с QT, вам не нужна библиотека highgui. Итак, во время установки OpenCV вам следует отменить выбор highgui в графическом интерфейсе Cmake. На Youtube / Web есть несколько руководств, в которых показано, как использовать OpenCV и QT без библиотеки highgui. Удачи с этим

Комментарии:

1. Я думаю, что лучшим решением является выбор highgui и отмена выбора опции «WITH_QT» в Cmake gui, поскольку вам может потребоваться прочитать и записать изображение.