みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

gcc gtkコンパイル,エラーの内容がわからない

ソース:https://www.ibm.com/developerworks/jp/linux/library/l-cairo/index.html
のサイトから
Cairo code to draw IBM logo (cairo-example.tar | 20KB)
をダウンロードし、コンパイルしたところ、エラーが出ましたが、エラーの内容が全然わかりません。どなたか教えてくれませんでしょうか?

cairo$ gcc -o ibm_cairo_logo ibm_cairo_logo.c $(pkg-config --cflags --libs gtk+-3.0)

ibm_cairo_logo.c: In function ‘draw_gtk’:
ibm_cairo_logo.c:238:3: warning: ‘gdk_cairo_create’ is deprecated: Use 'gdk_window_begin_draw_frame() and gdk_drawing_context_get_cairo_context()' instead [-Wdeprecated-declarations]
cr = gdk_cairo_create (widget->window);
^~
In file included from /usr/include/gtk-3.0/gdk/gdk.h:33:0,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from ibm_cairo_logo.c:1:
/usr/include/gtk-3.0/gdk/gdkcairo.h:35:12: note: declared here
cairo_t * gdk_cairo_create (GdkWindow *window);
^~~~~~~~~~~~~~~~
ibm_cairo_logo.c:238:32: error: ‘GtkWidget {aka struct _GtkWidget}’ has no member named ‘window’
cr = gdk_cairo_create (widget->window);
^~

投稿日時 - 2019-01-05 22:20:15

QNo.9574777

困ってます

質問者が選んだベストアンサー

> ibm_cairo_logo.c:238:32: error: ‘GtkWidget {aka struct _GtkWidget}’ has no member named ‘window’
> cr = gdk_cairo_create (widget->window);

上記の通り、struct GtkWidgetにwindowというメンバーが無いのでエラーになっています。

投稿日時 - 2019-01-05 23:15:03

お礼

回答ありがとうございます。GtkWidgetについて調べてみます。

投稿日時 - 2019-01-12 14:51:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>ibm_cairo_logo.c:238:32: error: ‘GtkWidget {aka struct _GtkWidget}’ has no member named ‘window’

エラーの内容的には#1の方がいわれているように GtkWidgetにwindowという名前のメンバーが存在したいというという事です。

https://www.ibm.com/developerworks/jp/linux/library/l-cairo/index.html
の関連トピックにGTK+2.8と書いてあるものがありますから
GTK+2.*系でないといけないのではないでしょうか。

投稿日時 - 2019-01-06 00:28:02

補足

GTK+2.*系でないといけないかどうか調べてみます。

投稿日時 - 2019-01-12 14:59:03

お礼

回答ありがとうございます。GtkWidgetについて調べてみます。

投稿日時 - 2019-01-12 14:51:33

ANo.2

Makefile の LDFLAGS の行を
LDLIBS += `pkg-config gtk+-2.0 --libs`
に直して
% make
cc -Wall -g `pkg-config gtk+-2.0 --cflags` -lm ibm_cairo_logo.c `pkg-config gtk+-2.0 --libs` -o ibm_cairo_logo
% ./ibm_cairo_logo
で実行できたけど

投稿日時 - 2019-01-05 23:40:53

お礼

回答ありがとうございます。

LDLIBS += `pkg-config gtk+-2.0 --libs`に直して
makeを実行したところ
Package gtk+-2.0 was not found
というエラーが出ましたので、

回答No.3の
> https://www.ibm.com/developerworks/jp/linux/library/l-cairo/index.html
> の関連トピックにGTK+2.8と書いてあるものがありますから
> GTK+2.*系でないといけないのではないでしょうか。

について調べてみます。

投稿日時 - 2019-01-12 14:58:24

あなたにオススメの質問