GTK+ 程序编译成功后运行报错

fake 发布于 2011/07/07 10:39
阅读 1K+
收藏 0

        最近看了一下GTK+程序开发,将官方上教程的例子搬下来后可以成功编译,但是在运行时报出一堆错误,急需大牛求救。

        例子的源码如下:

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {
    GtkWidget *window;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);

    gtk_main();

    return 0;
}

        保存为 base.c,之后编译:

gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`

        编译时没有报出错误,但是一运行 ./base 后即出现如下错误:

$ ./base

(base:4247): GLib-GObject-WARNING **: cannot register existing type `GtkObject'

(base:4247): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_type > 0' failed

(base:4247): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(base:4247): GLib-GObject-WARNING **: cannot register existing type `GtkBuildable'

(base:4247): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(base:4247): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_type > 0' failed

(base:4247): GLib-GObject-WARNING **: cannot register existing type `GtkBuildable'

(base:4247): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(base:4247): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_type > 0' failed

(base:4247): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(base:4247): GLib-GObject-CRITICAL **: g_type_register_static: assertion `parent_type > 0' failed

(base:4247): GLib-GObject-WARNING **: cannot register existing type `GtkBuildable'

(base:4247): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(base:4247): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(base:4247): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)' failed
段错误
        这个问题由于没有头绪,一直 google 不到好的解决方法,貌似是 GLib 的问题,但我重装 GLib 之后错误依旧,不明白是什么状况。

加载中
1
fake
fake

        终于找到一个勉强点的解决方法,在尝试安装 Anjuta 之后,使用该集成开发环境进行编译执行,发现在编译时抛出如下异常:

gcc: /usr/lib/libgtk-x11-2.0.so: No such file or directory

        使用命令去查找,只有一个 libgtk-x11-2.0.so.0。

    不明所以,但直接将该文件复制为 libgtk-x11-2.0.so 之后,编译运行就可以了。

0
涛儿
涛儿
感觉好像是系统中有两个glib来着,你是什么系统?最好用系统自带的环境。
0
fake
fake

引用来自“涛儿”的答案

感觉好像是系统中有两个glib来着,你是什么系统?最好用系统自带的环境。

        使用的是 Debian 6.0.2 ,这个开发环境使用的就是系统自带的,除非使用这句会导致新添一个 glib 环境:

apt-get install build-essential

返回顶部
顶部