如何使用GTK+;和Windows上的GCC(MSYS)

如何使用GTK+;和Windows上的GCC(MSYS),c,windows,gtk,glade,C,Windows,Gtk,Glade,嘿,伙计们,我最近开始用C涉足Glade。我已经能够用C编译一些GTK+应用程序,但在用Glade文件编译下面的C文件时,我不断遇到编译错误(摘自Micah Carrick的教程) main.c #include <gtk/gtk.h> void on_window_destroy (GtkObject *object, gpointer user_data) { gtk_main_quit (); } int main (int argc, char *argv[])

嘿,伙计们,我最近开始用C涉足Glade。我已经能够用C编译一些GTK+应用程序,但在用Glade文件编译下面的C文件时,我不断遇到编译错误(摘自Micah Carrick的教程)

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);
}
我得到以下错误:

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

我曾尝试将tutorial.glade更改为XML文件,但没有更改任何内容。也许我必须将GtkObject重命名为其他名称,或者我错过了编译标志?抱歉,如果这是一个noob问题,仍在学习:s

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


我建议向教程的宿主发送电子邮件进行更新,或者至少在其上方放置一条警告横幅,说明它使用了过时的API。

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


我建议向教程的宿主发送电子邮件以更新教程,或者至少在教程上方添加一条警告横幅,说明它使用了过时的API。

it build:)但是在运行生成的.exe时不会发生任何事情。也许我需要在pkg配置路径中添加一些库,如libglade-2.0,以使其正常工作,但我不确定如何做到这一点,到目前为止还没有成功,我建议对3.0API使用更为更新的教程。试图从过时的学习材料中自学是令人沮丧的。它构建:)但是,当运行生成的.exe时,什么都不会发生。也许我需要在pkg配置路径中添加一些库,如libglade-2.0,以使其工作,但我不确定如何做,到目前为止还没有成功,我建议对3.0API使用更为更新的教程。试图从过时的学习材料中自学只会令人沮丧。
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)
                    ^