【问题标题】:Gtkbuilder errorGtkbuilder 错误
【发布时间】:2013-02-19 21:09:01
【问题描述】:

我已经为我的 powerpc 目标板安装了带有 directFB 后端的 GTK+- 2.10.14,我可以在我的目标板上运行示例应用程序并看到 gui 出现在目标 LCD 中。我开始使用 glade 创建 GUI但是在使用 Glade 创建我自己的 GUI 时,我发现 glade 需要 gtkbuildet 来编译一个 .glade 文件。 gtkbuilder 可以从 GTK+-2.12.0 版本中获得,所以再次安装 GTK+-2.12.0 和休闲程序在this tutorial 中说。

我的程序如下:

#include<gtk/gtk.h>

int
main( int    argc,char **argv )
{

GtkBuilder *builder;
GtkWidget  *window;
GError     *error = NULL;

/* Init GTK+ */
gtk_init( &argc, &argv );

/* Create new GtkBuilder object */
builder = gtk_builder_new();
/* Load UI from file. If error occurs, report it and quit application.
*      * Replace "tut.glade" with your saved project. */
if( ! gtk_builder_add_from_file( builder, "graph.glade", &error ) )
    {
        g_warning( "%s", error->message );
        g_free( error );
        return( 1 );
    }

/* Get main window pointer from UI */
window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) );

/* Connect signals */
gtk_builder_connect_signals( builder, NULL );

/* Destroy builder, since we don't need it anymore */
g_object_unref( G_OBJECT( builder ) );

/* Show window. All other widgets are automatically shown by GtkBuilder */
gtk_widget_show( window );

/* Start main loop */
gtk_main();

return( 0 );
}

现在当我编译上面的程序时,我遇到了如下错误:

powerpc-linux-gnu-gcc progressbar.c -o progressbar -pthread -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/lib/glib-2.0/include -I/opt/gtkdfb/usr/local/include/pango-1.0 -I/opt/gtkdfb/usr/local/include/cairo -I/opt/gtkdfb/usr/local/include -I/opt/gtkdfb/usr/local/freetype2 -I/opt/gtkdfb/usr/local/libpng12 -I/opt/gtkdfb/usr/local/includegtk-2.0 -D_REENTRANT -D_GNU_SOURCE -I/opt/gtkdfb/usr/include/directfb -L/opt/gtkdfb/usr/local/lib  -ldirectfb -lfusion -ldirect -lpthread -ldl -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lxml2 -lpng12 -lgthread-2.0 -lgtk-directfb-2.0 -lffi -lz -lm `pkg-config gtk+-2.0 --cflags --libs`

/tmp/ccZ9fkFp.o: In function `main':

progressbar.c:(.text+0x3c): undefined reference to `gtk_builder_new'

progressbar.c:(.text+0x58): undefined reference to `gtk_builder_add_from_file'

progressbar.c:(.text+0xb0): undefined reference to `gtk_builder_get_object'

progressbar.c:(.text+0xd8): undefined reference to `gtk_builder_connect_signals'

collect2: ld returned 1 exit status

make: *** [helloworld] Error 1

请帮助我摆脱这个错误。

【问题讨论】:

  • 您确定您的程序正在链接到新版本的 Gtk 吗?尝试一个简单的程序,打印出 gtk 版本以检查相同,或者如果ldd 类似工具可用,那么您可以检查您的可执行文件所依赖的共享对象,看看它是否真的与较新的 gtk 库链接

标签: gtk


【解决方案1】:

当没有GtkBuilder 时,使用libglade 代替。您必须使用支持 GTK+2 和 libglade 的 glade 版本(3.8 branch 符合要求)。

不要尝试在较新的 GTK+ 上使用 directFB 后端:它由 Debian 安装程序的开发人员积极维护,但很长时间以来已被废弃。

【讨论】:

【解决方案2】:

我的猜测是pkg-config 仍然指向旧的 2.10 版本。我也不明白为什么你有 pkg-config gtk+-2.0 --cflags --libs 并且 还提供所有 GCC 命令行参数。那应该是pkg-config的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多