解決済み

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

  • 困ってます
  • 質問No.9574777
  • 閲覧数72
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 88% (32/36)

ソース: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);
^~

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

  • 回答No.1

ベストアンサー率 21% (62/287)

> 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というメンバーが無いのでエラーになっています。
お礼コメント
purogu2017

お礼率 88% (32/36)

回答ありがとうございます。GtkWidgetについて調べてみます。
投稿日時 - 2019-01-12 14:51:15

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 28% (1334/4673)

コンピューター カテゴリマスター
>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.*系でないといけないのではないでしょうか。
補足コメント
purogu2017

お礼率 88% (32/36)

GTK+2.*系でないといけないかどうか調べてみます。
投稿日時 - 2019-01-12 14:59:03
お礼コメント
purogu2017

お礼率 88% (32/36)

回答ありがとうございます。GtkWidgetについて調べてみます。
投稿日時 - 2019-01-12 14:51:33
  • 回答No.2

ベストアンサー率 62% (260/414)

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
で実行できたけど
お礼コメント
purogu2017

お礼率 88% (32/36)

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

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
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ