如何使用GTK+;和Windows上的GCC(MSYS)
嘿,伙计们,我最近开始用C涉足Glade。我已经能够用C编译一些GTK+应用程序,但在用Glade文件编译下面的C文件时,我不断遇到编译错误(摘自Micah Carrick的教程) main.c如何使用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[])
#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)
^