使用 GTK+3 学习 GUI 编程
Learning GUI programming with GTK+3
我是 GUI 编程的新手。我最近在 Linux 上安装了 Gtk+3 版本。但是,当我输入以下代码时:
#include <gtk/gtk.h>
#include <stdio.h>
static int count = 0;
void button_clicked(GtkWidget *button, gpointer data)
{
printf(“%s pressed %d time(s) \n”, (char *) data, ++count);
}
int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label(“Hello World!”);
gtk_container_add(GTK_CONTAINER(window), button);
g_signal_connect(GTK_OBJECT (button), “clicked”,
GTK_SIGNAL_FUNC (button_clicked),
“Button 1”);
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main ();
return 0;
}
为了运行这段代码我使用了这个命令:$ gcc gtk1.c –o gtk1 pkg-config --cflags --libs gtk+-3.0
但我有这样的错误
undefined reference to GTK_OBJECT;
undefined reference to GTK_SIGNAL_FUNC;
这是因为您的代码示例适用于旧版本的 GTK+ 2。GTK_OBJECT
在后期的 GTK+ 2.x 版本中已弃用,并最终在 GTK+ 3 中删除。[=11 也是如此=].两者都已移至 GObject 库,现在它们分别为 G_OBJECT
和 G_CALLBACK
.
为避免使用过时的代码,请从 code samples from the GTK+ 3 documentation 开始。
我是 GUI 编程的新手。我最近在 Linux 上安装了 Gtk+3 版本。但是,当我输入以下代码时:
#include <gtk/gtk.h>
#include <stdio.h>
static int count = 0;
void button_clicked(GtkWidget *button, gpointer data)
{
printf(“%s pressed %d time(s) \n”, (char *) data, ++count);
}
int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label(“Hello World!”);
gtk_container_add(GTK_CONTAINER(window), button);
g_signal_connect(GTK_OBJECT (button), “clicked”,
GTK_SIGNAL_FUNC (button_clicked),
“Button 1”);
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main ();
return 0;
}
为了运行这段代码我使用了这个命令:$ gcc gtk1.c –o gtk1 pkg-config --cflags --libs gtk+-3.0
但我有这样的错误
undefined reference to GTK_OBJECT;
undefined reference to GTK_SIGNAL_FUNC;
这是因为您的代码示例适用于旧版本的 GTK+ 2。GTK_OBJECT
在后期的 GTK+ 2.x 版本中已弃用,并最终在 GTK+ 3 中删除。[=11 也是如此=].两者都已移至 GObject 库,现在它们分别为 G_OBJECT
和 G_CALLBACK
.
为避免使用过时的代码,请从 code samples from the GTK+ 3 documentation 开始。