GTK 3.0给出了编译错误&#34;只能直接包含<gdk gdkh =“”>&#34; </gdk>

时间:2014-03-21 18:27:12

标签: c gcc gtk3

使用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&包含文件中。)

猜测或了解导致此错误的原因,以及如何解决?

1 个答案:

答案 0 :(得分:1)

这里的想法似乎是GDK作者想要阻止你直接包含特定的GDK标题(可能是因为这些标题具有未明确包含的细微依赖关系)。

只需按照他们的意思行事,删除<gdk/x>个包含内容,然后添加<gdk/gdkh>。据推测,这应该包括您想要的API。