windows 配置gtk+glade3+codeblocks

最近在开发C语言,要用到图形界面gtk+,图形界面很多的有qt,opengl,3ds。C语言适合与gtk+,功能很强大。linux大名顶顶的gnome和firfox都是gtk+开发的。网上有很多教程,可是时间有点太早了,按教程做没做出来,有很多疑惑的地方。

准备:codeblocks13.12、gtk+2.24glade3

说明一下:我的是64 位系统,可是gtk+要用32位的,如果你用64位gtk+可能会出现

undefined reference to `gtk_init'    
    undefined reference to `gtk_window_new'    
    undefined reference to `gtk_widget_show'   
    undefined reference to `gtk_main'

这样类似的错误,你可以把它换成32位的试一下。

1、安装codeblocks就不解释了,下载.exe文件直接安装就行了。

2、gtk+下载32位的,你也可以试一下64位的,不行再换。gtk3现在还不支持,最好用gtk+2,网上说也行你也可以试一下。网上说要要配置环境变量path添加路径,可加可不加。要是你用到命令行,就添加。我这里没添加。把它随便放一个地方,在codeblocks创建gtk工程时要选择gtk文件路径,这里也说明了不用添加path环境变量。

3、glade3下载直接安装,不解释了。

开始:codeblocks中创建gtk+项目。

windows 配置gtk+glade3+codeblocks_第1张图片

windows 配置gtk+glade3+codeblocks_第2张图片

创建好后,项目中会自动添加一个main.c文件,里面有个示例代码,你可以直接运行查看结果。如果有上面说的错误,就换成gtk32位的。网上也有说要在codeblocks中配置settings中global variables。我其实没配置也可以得。

为什么要用到glade3?它相当于android开发的xml文件,android开发中ui可以java编写,也可以用xml配置。一个控件用代码写很麻烦,初学者不适合,那就可以直接用glade3,你安装后可以发现控件别人帮你写好了,直接用就行了。

安装好后,直接打开。有glade3教程,有20多页你可以大概读一下。添加一个window,空间在toplevel中。

这里注意一下,窗口的名字是window1,默认的。后面要用到。

windows 配置gtk+glade3+codeblocks_第3张图片

保存一下myapp.glade.后缀名是glade其实就是xml文件。格式有两种gtkbuilder和libglade。libglade逐渐被淘汰。

下面怎么在codeblocks中利用刚才建好的myapp.glade文件。写一个下代码测试。

#include <gtk/gtk.h>

void on_window_destroy (GtkObject *object, gpointer user_data)
{
        gtk_main_quit();
}

int main (int argc, char *argv[])
{
        GtkBuilder *builder;
        GtkWidget  *window1;

        gtk_init (&argc, &argv);

        builder = gtk_builder_new ();
        gtk_builder_add_from_file (builder, "myapp.glade", NULL);

        window1 = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
        gtk_builder_connect_signals (builder, NULL);
        g_object_unref (G_OBJECT (builder));

        gtk_widget_show (window1);
        gtk_main ();

        return 0;
}
myapp.glade要放在codeblocks创建的工程中和main.c在同一个文件夹下。如果这里提示:

Gtk-CRITICAL **: IA__gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed。

可能是你编写的glade文件找不到,或者控件没有。你可以下一下这里写的

http://blog.csdn.net/attilax/article/details/12297579

注意代码中的window1和glade文件中的window1是对应的。




你可能感兴趣的:(TO,windows,undefined,reference,gtk+,`gtk_init',C语言ui,glade3)