
Ubuntu日本語フォーラム

ログインしていません。
OSは12.10(64bit)、gccバージョンはUbuntu/Linaro 4.7.2-2ubuntu1です。
#include <gtk/gtk.h>
static void cb_button_clicked (GtkWidget *button, gpointer user_data)
{
gtk_main_quit ();
}
int main(int argc, char** argv)
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request(window, 300, 400);
{
GtkWidget *vbox;
vbox = gtk_vbox_new (FALSE, 2); //33行目
gtk_container_add(GTK_CONTAINER(window), vbox);
{
GtkWidget *image;
GtkWidget *button;
image = gtk_image_new_from_file("sample.jpg");
gtk_box_pack_start (GTK_BOX(vbox), image, TRUE, TRUE, 0);
button = gtk_button_new_with_label("Quit");
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(cb_button_clicked), NULL);
}
}
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
上記Cファイルを
gcc ファイル名.c -o ファイル名 $(pkg-config --cflags --libs gtk+-3.0)
でコンパイルすると、
ファイル名.c: 関数 ‘main’ 内:
ファイル名.c:33:5: 警告: ‘gtk_vbox_new’ は廃止されました (宣言位置 /usr/include/gtk-3.0/gtk/deprecated/gtkvbox.h:60): Use 'gtk_box_new' instead [-Wdeprecated-declarations]
と表示されて通りません。
上にイメージ、下にボタンを配置するだけなのですが、参考書がGTK+2.0なので、解決方法が分かりません。
アドバイスをいただければ助かります。よろしくお願い致します。
オフライン
エラーメッセージ通りだと思うのですが、
gtk_vbox_newが無くなって、代わりにgtk_box_newを使えと言うことでは。
パラメータも変わっているみたいで以下のところに直し方がコードで書いてあります。
https://github.com/vain/pdfPres/commit/8478a81
オフライン
おっしゃる通り、エラーメッセージに、gtk_box_newを使うように書かれていましたね。
これだけでは分からなかったのですが、ご案内いただいたページを拝見し、
vbox = gtk_vbox_new (FALSE, 2);
↓
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
と修正して、コンパイルに成功しました。
array様、誠にありがとうございました。
オフライン
参考程度ですが、devhelpをインストールしてみてはどうでしょうか。
関数の説明やサンプルコードが載っている他、GTK+2からGTK+3への移行、廃止された関数の説明などがされています。
オフライン
devhelpは標準搭載されていました。
GTK+3.0のマニュアルが記載されていて、重宝しそうです。
全部英語ですが、GTK+自体ひたすら英語表記なので、
プログラミングと英語を同時に学習できそうです。
vbk様、アドバイスありがとうございました。
オフライン