Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将GTK3.0项目移植到GTK2.0_C_Opencv_Makefile_Gtk_Gtk2 - Fatal编程技术网

C 将GTK3.0项目移植到GTK2.0

C 将GTK3.0项目移植到GTK2.0,c,opencv,makefile,gtk,gtk2,C,Opencv,Makefile,Gtk,Gtk2,我正在构建一个简单的GUI应用程序,我已经成功地在我的Raspberry PI开发板上部署并运行了它。然而,由于OpenCV依赖于GTK+v2.0的问题,我不得不将我的应用程序移植到GTK+的旧版本。我已经熟悉了在makefiles中更改include路径等,以及库链接顺序。但是,当我进行所有必要的更改时,在构建过程中会发生致命错误 Building dependencies file for main.o In file included from /opt/rpi/usr/include/g

我正在构建一个简单的GUI应用程序,我已经成功地在我的Raspberry PI开发板上部署并运行了它。然而,由于OpenCV依赖于GTK+v2.0的问题,我不得不将我的应用程序移植到GTK+的旧版本。我已经熟悉了在makefiles中更改include路径等,以及库链接顺序。但是,当我进行所有必要的更改时,在构建过程中会发生致命错误

Building dependencies file for main.o
In file included from /opt/rpi/usr/include/gtk-2.0/gdk/gdkscreen.h:32:0,
             from /opt/rpi/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:31,
             from /opt/rpi/usr/include/gtk-2.0/gdk/gdk.h:32,
             from /opt/rpi/usr/include/gtk-2.0/gtk/gtk.h:32,
             from inc/ui.h:8,
             from main.c:10:
/opt/rpi/usr/include/gtk-2.0/gdk/gdktypes.h:55:23: fatal error:
   gdkconfig.h: No such file or directory
我已确认GTK+v3.0安装中存在缺少的文件,
gdkconfig.h

find /opt/rpi/usr/include -iname "gdkconfig*"
./gtk-3.0/gdk/gdkconfig.h

但是我的GTK+v2.0安装没有这样的文件。我已经通过apt get安装了最新版本,但仍然没有成功

这个问题有什么解决办法吗


谢谢。

事实证明,某些文件夹,包括路径中带有
arm-linux-gnueabihf
的文件夹,并不是我手动包含的,而它们本应该包含的。最后,我将SSH’ed插入RPI设备,并从以下命令复制输出:

pkgconfig --clfags --libs gtk+-2.0
然后我复制了所有include目录语句(即:那些以
-I
开头的语句),并创建了一个包含大量字符串的变量,并对所有库包含进行了类似的操作。上述命令的输出包括在下面

-pthread -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0
-I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/freetype2 -I/usr/include/libpng12  -lgtk-x11-2.0 -lgdk-x11-2.0 
-latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0
-lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0

因此,简而言之,这是有效的,我甚至不需要更改我的代码的任何一行。现在一切正常。

“但是我的GTK+v2.0安装没有这样的文件”:有两种选择。要么GTK2打包已损坏(如果文件确实完全丢失),要么该文件位于其他目录中,并且您的包含路径有问题。嗯,实际上还有第三个选项:确保您的构建与先前的GTK3构建配置完全相同:如果您不确定,尝试使用全新的源代码checkout.OpenCV>=3.0.0与GTK+3兼容。不使用
libopencv\u highgui
链接也会起到作用。如果有其他选择,则永远不要降级应用程序。