2013-03-07 3 views
1

Я использую малиновый pi с GTK +, означает ARM + Debian + GTK +. Но даже пример сайта GTK всегда терпит неудачу в моей среде. как:gtk_init() не удалось неожиданно

#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 и попытался установить ее на < мой IP>: 0.0, но никакого эффекта. Я сомневаюсь, что это может быть проблемой, когда GTK не может получить ресурс отображения, но я не нашел способа решить эту проблему.

FYI Я использую шпатлевку SSH для малиныPi.

+0

Эти ошибки вызваны ошибкой gtk_init. вы должны проверить возвращаемое значение gtk_check_init и не продолжать дальше. Не то, чтобы это решило вашу проблему. Работают ли другие приложения gtk? – iain

+0

Какое приложение gtk можно использовать для тестирования? Например? – luckyee

+1

Вы используете сервер XWindow на вашем компьютере? (сервер - это дисплей). – gpoo

ответ

1

Вы, кажется, совершенно новой для вещей, которые вы делаете, так что есть 2 вещи, которые приходят на ум

  • (как уже упоминалось) вам нужен запущенный экземпляр XServer работает
  • делает ваш 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 документации/тем, есть тонны устаревших вещей на сети.

+0

Спасибо. Я новичок в материалах GUI. Теперь я установил сервер cygwin xwin, и проблема была решена на удаленном сервере и на локальном сервере, просто используйте startx и xhost +, чтобы решить мою проблему. Я не понимал, что должен быть сервер, чтобы принять экземпляр GUI :) – luckyee

+0

Вы можете принять этот ответ, установив отметку ниже оценки;) – drahnr