1

私はGTK+でラズベリーパイを使用しています。これはARM+Debian +GTK+を意味します。しかし、GTK Webサイトの例でさえ、私の環境では常に失敗します。お気に入り:

#include <gtk/gtk.h>

int main( int   argc,
      char *argv[] )
{
GtkWidget *window;

//gtk_init (&argc, &argv);
gtk_init_check(&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show  (window);

gtk_main ();

return(0);
}

私はこれをコンパイルしました

gcc -g gtktest.cpp -o base `pkg-config gtk+-2.0 --cflags --libs` 

そして成功しました。それを実行すると、私は得ました:

(base:12760): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(base:12760): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(base:12760): Gtk-WARNING **: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window

(base:12760): Gdk-CRITICAL **: IA__gdk_screen_get_default_colormap: assertion `GDK_IS_SCREEN (screen)' failed

(base:12760): Gdk-CRITICAL **: IA__gdk_colormap_get_visual: assertion `GDK_IS_COLORMAP (colormap)' failed

(base:12760): Gdk-CRITICAL **: IA__gdk_screen_get_default_colormap: assertion `GDK_IS_SCREEN (screen)' failed

(base:12760): Gdk-CRITICAL **: IA__gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed

(base:12760): Gdk-CRITICAL **: IA__gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed

(base:12760): Gdk-CRITICAL **: IA__gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
Segmentation fault

gtk_init()のみを使用すると、エラーも発生します。DISPLAY変数を確認し、<my IP>:0.0に設定してみましたが、効果がありませんでした。GTKが表示リソースを取得できないという問題ではないかと思いますが、これを解決する方法が見つかりませんでした。

参考までに、raspberryPiにパテSSHを使用しています。

4

1 に答える 1

1

あなたは自分のやることにまったく慣れていないようですので、私の頭に浮かぶことが2つあります。

  • (すでに述べたように)実行中のxserverインスタンスが実行されている必要があります
  • bash変数は正しい表示を生成しますDISPLAYか(AFAIK gtk + -2.0はそれを尊重し、適切にエクスポートされることも確認します)
  • xhost +別の端末から現在のxserverへのアクセスを許可するには(これには重大なセキュリティ問題があることに注意してください。詳細については、http //www.tldp.org/LDP/intro-linux/html/sect_10_05.htmlを参照し、xhostのマンページを参照してください。ショートカット!)

詳細については、http://www.hungry.com/~jamie/xexport.htmlをお読みください。

また、xserverのドキュメント/トピックに注意してください。ネット上には、時代遅れのものがたくさんあります。

于 2013-03-08T15:49:15.437 に答える