Qt 在Windows中编译OpenCV SVN主干-highgui/libVideoInput中出错

Qt 在Windows中编译OpenCV SVN主干-highgui/libVideoInput中出错,qt,opencv,makefile,compiler-errors,cmake,Qt,Opencv,Makefile,Compiler Errors,Cmake,我知道关于这一点有几个问题,但没有一个问题向我展示了如何克服我所犯的错误 使用本指南和cmake,我已经能够编译当前的OpenCV版本(2.2)。因此,该版本运行良好,我可以在Qt中使用它编写代码。因此,我需要启用_QT并构建自己 但不幸的是,我发现2.2版本并不支持所有类型的摄像头(因为我想从720p网络摄像头获取摄像头流)。我已经读到,这是固定在最新的svn主干版本 因此,我检查了最新的svn主干并再次运行Cmake,创建了一个新文件夹,选择了源文件,使用指向g++.exe和qcc.exe的

我知道关于这一点有几个问题,但没有一个问题向我展示了如何克服我所犯的错误

使用本指南和cmake,我已经能够编译当前的OpenCV版本(2.2)。因此,该版本运行良好,我可以在Qt中使用它编写代码。因此,我需要启用_QT并构建自己

但不幸的是,我发现2.2版本并不支持所有类型的摄像头(因为我想从720p网络摄像头获取摄像头流)。我已经读到,这是固定在最新的svn主干版本

因此,我检查了最新的svn主干并再次运行Cmake,创建了一个新文件夹,选择了源文件,使用指向g++.exe和qcc.exe的链接进行了MinGW编译,配置并启用了“with_QT”,并生成了必要的makefile

然后我以管理员的身份启动了一个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 ..\..\bin\libopencv_highgui220d.dll
Creating library file: ..\..\lib\libopencv_highgui220d.dll.a
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
ee): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
104): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2a6): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2d4): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2fe): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
314): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
4b6): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
4e4): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1b41): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1b5a): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1bb4): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1c03): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1c88): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
1ca7): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2265): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
228d): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2318): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
2337): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
28f5): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
291d): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
38a0): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
38df): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
406b): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
40a3): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
4211): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
42ec): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
6cf8): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
6d17): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
6e1e): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
6e3e): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
7002): undefined reference to `_Unwind_SjLj_Resume'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
70b4): undefined reference to `__gxx_personality_sj0'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
70cd): undefined reference to `_Unwind_SjLj_Register'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
7111): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0x
742e): undefined reference to `_Unwind_SjLj_Unregister'
C:\workspace\opencv\OpenCV_SVN\modules\highgui\..\..\3rdparty\lib/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时似乎出现了一些问题。。。 有人熟悉这个错误吗?我怎样才能修好它?我需要在安装之前安装任何特殊的设备吗


如果有人能帮助我,那就太好了!谢谢

理论上,通过使用QT安装OpenCV,您不需要highgui库。因此,在安装OpenCV期间,您应该从Cmake gui中取消选择highgui。Youtube/Web上有一些教程演示了如何在没有highgui库的情况下使用OpenCV和QT。祝你好运

你试过这里的建议了吗?谢谢你的链接。。。我刚试过。。。将2.2版本源中的libvideoinput.a复制到下载的svn主干中并进行编译,但出现相同的错误。。。我甚至试过2.1版本中的那个。。。虽然没有改变…我也只是尝试编译2.1版本,但是我得到了与2.2 SVN主干相同的错误。。。2.2版本仍然有效…我认为更好的解决方案是选择highgui并在Cmake gui中取消选择“WITH_QT”选项,因为您可能需要读取和写入图像。