我尝试进行编译OpenCV 3.1.0
并RHEL 6.4
收到以下错误:
[ 34%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_gtk.cpp.o
/hpcf/libs/opencv/vendor/3.1.0-2/modules/highgui/src/window_gtk.cpp: In function ‘void cvImageWidget_realize(GtkWidget*)’:
/hpcf/libs/opencv/vendor/3.1.0-2/modules/highgui/src/window_gtk.cpp:167: error: ‘gtk_widget_set_realized’ was not declared in this scope
/hpcf/libs/opencv/vendor/3.1.0-2/modules/highgui/src/window_gtk.cpp: In function ‘void cvImageWidget_size_allocate(GtkWidget*, GtkAllocation*)’:
/hpcf/libs/opencv/vendor/3.1.0-2/modules/highgui/src/window_gtk.cpp:379: error: ‘gtk_widget_get_realized’ was not declared in this scope
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_gtk.cpp.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
我们清楚gtk
地看到cmake
:
-- GUI:
-- QT: NO
-- GTK+ 2.x: YES (ver 2.18.9)
-- GThread : YES (ver 2.22.5)
-- GtkGlExt: NO
-- OpenGL support: NO
-- VTK support: NO
所以我不知道如何解决这个问题。有人有什么想法吗?
答案1
我知道已经有一段时间了,所以如果它有帮助的话:
我在 RHEL 上编译 OpenCV 3.1.0 时遇到了同样的错误。我从 OpenCV 2.4.3 分支中查找了 highgui/src/window_gtk.cpp 中的代码。执行以下操作:
- 用“GTK_WIDGET_SET_FLAGS”替换“gtk_widget_set_realized”
- 将“gtk_widget_get_realized”替换为“GTK_WIDGET_REALIZED”
一旦我改变了这些,它就起作用了。
答案2
尝试安装最新版本的 gcc
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.9 g++-4.9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9