如何在Windows上使用GTK +和GCC编译Glade / XML(MSYS)

时间:2016-03-13 01:13:24

标签: c windows gtk glade

嘿伙计们我最近开始用C编写Glade。我已经能够在C中编译一些GTK +应用程序但是在使用glade文件编译以下C文件时我一直遇到编译错误(取自Micah卡里克的教程)

的main.c

#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       *window;

    gtk_init (&argc, &argv);

    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "tutorial.glade", NULL);
    window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
    gtk_builder_connect_signals (builder, NULL);

    g_object_unref (G_OBJECT (builder));

    gtk_widget_show (window);                
    gtk_main ();

    return (0);
}

tutorial.glade

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.0 on Tue Nov 20 14:05:37 2007 -->
<glade-interface>
  <widget class="GtkWindow" id="window1">
    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
    <child>
      <placeholder/>
    </child>
  </widget>
</glade-interface>

并在MSYS中编译:

gcc -Wall -g -mwindows -O2 main.c -o program.exe `pkg-config --cflags --libs gtk+-3.0`

我收到以下错误:

main.c:4:20: error: unknown type name 'GtkObject'
 on_window_destroy (GtkObject *object, gpointer user_data)
                    ^

我尝试过将教程更改为XML文件,但没有改变任何内容。也许我必须将GtkObject重命名为不同的东西,或者我错过了编译标志?对不起,如果它是一个菜鸟问题,还在学习:S

1 个答案:

答案 0 :(得分:3)

GtkObject更改为GtkWidget。看起来您的教程使用旧的GTK 2.0 API,而您正在使用当前的3.0 API进行编译。

我建议通过电子邮件发送任何托管教程的人来更新它,或者至少在它上面放一个警告标语,说它使用的是过时的API。