使用GTK ++项目。使用Ubuntu的libgtk2.0-dev库时,事情编译成功。删除该库并安装libgtk3.0-dev库后,我在编译时收到以下错误消息:
In file included from file_operations.c:4:0:
/usr/include/gtk-3.0/gdk/gdkevents.h:26:2 #error: Only <gdk/gdkh> can be included directly.
这是编译命令:
gcc -Wall -o gexplorer2 main.c file_operations.c -I. -I/usr/include/gnome-vfs-2.0 -D _FILE_OFFSET_BITS=64 `pkg-config --cflags gtk+-3.0` `pkg-config --libs gtk+-3.0` `pkg-config --cflags gio-2.0`
file_operations.c包含以下内容:
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
#include <gdk/gdkevents.h>
在gdkevents.h中,以下行生成编译器错误
#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
#error "Only <gdk/gdkh> can be included directly."
#endif
(这些行不在GTK 2.0&包含文件中。)
猜测或了解导致此错误的原因,以及如何解决?
答案 0 :(得分:1)
这里的想法似乎是GDK作者想要阻止你直接包含特定的GDK标题(可能是因为这些标题具有未明确包含的细微依赖关系)。
只需按照他们的意思行事,删除<gdk/x>
个包含内容,然后添加<gdk/gdkh>
。据推测,这应该包括您想要的API。