LINUX.ORG.RU

glade, gtk на Open Solaris 2008.11


0

0

uname -a: yan@myopensolaris:~/GladeProjects$ uname -a SunOS myopensolaris 5.11 snv_101b i86pc i386 i86pc Solaris

GCC=gcc INCLUDE1=-I/usr/include/gtk-2.0/ INCLUDE2=-I/usr/include/libglade-2.0 INCLUDE3=-I/usr/include/glib-2.0 INCLUDE4=-I/usr/lib/glib-2.0/include INCLUDE5=-I/usr/include/cairo INCLUDE6=-I/usr/include/pango-1.0 INCLUDE7=-I/usr/lib/gtk-2.0/include INCLUDE8=-I/usr/include/atk-1.0 PATHLIB1=-L/usr/lib LIBS1=-lgtk -lglade-2.0 -lgdk

SRC=test_glade_1.c FLAGS1=$(INCLUDE1) $(INCLUDE2) $(INCLUDE3) $(INCLUDE4) $(INCLUDE5) $(INCLUDE6) $(INCLUDE7) FLAGS2=$(INCLUDE8) FLAGS3=$(PATHLIB1) $(LIBS1) #--export-dynamic

all: $(GCC) $(FLAGS1) $(FLAGS2) $(FLAGS3) $(SRC) -o run

================== Си код: #include <gtk/gtk.h> #include <glade/glade.h>

void some_handler(GtkWidget *widget) { /* a handler referenced by the glade file. Must not be static * so that it appears in the global symbol table. */ }

int main(int argc, char **argv) { GladeXML *xml; GtkWidget *widget;

gtk_init(&argc, &argv); xml = glade_xml_new(«test_1.glade», NULL, NULL);

/* get a widget (useful if you want to change something) */ widget = glade_xml_get_widget(xml, «widgetname»);

/* connect signal handlers */ glade_xml_signal_autoconnect(xml);

gtk_main();

return 0; }

================================== yan@myopensolaris:~/GladeProjects$ ./run

(process:3420): GLib-GObject-CRITICAL **: gtype.c:2458: initialization assertion failed, use g_type_init() prior to this function

(process:3420): GLib-GObject-CRITICAL **: file gobject.c: line 1053: assertion `G_TYPE_IS_OBJECT (object_type)' failed

(process:3420): libglade-CRITICAL **: file glade-xml.c: line 179: assertion `self != NULL' failed

(process:3420): GLib-GObject-CRITICAL **: file gobject.c: line 2366: assertion `G_IS_OBJECT (object)' failed yan@myopensolaris:~/GladeProjects$

как искать ошибку? Что надо исправлять? В сановскую багзиллу?

anonymous

Результат xml = glade_xml_new("test_1.glade", NULL, NULL); нужно проверить на NULL всего лишь, перед тем, как дальше им пользоваться

welkam ★★
()
Ответ на: комментарий от yantux

Неправильно, падает следующая функция, потому что предыдущая заканчивается неудачей.

И вообще сейчас уже GtkBuilder нужно использовать.

welkam ★★
()
Ответ на: комментарий от welkam

>Результат xml = glade_xml_new("test_1.glade", NULL, NULL); нужно >проверить на NULL всего лишь, перед тем, как дальше им пользоваться >welkam * (*) (17.12.2008 11:53:15)

Так оно и сеть/ Что не т? С чем надо разбираться?

anonymous
()
Ответ на: комментарий от welkam

>Неправильно, падает следующая функция, потому что предыдущая >заканчивается неудачей.

Да? так оно и есть. Как с этим бороться?

>И вообще сейчас уже GtkBuilder нужно использовать. >welkam * (*) (17.12.2008 20:53:19)

В солярке вроде опка нет.

anonymous
()
Ответ на: комментарий от welkam

Есть он и создан абсолютно штатными средствами. strerror(errno) говорит, что файл не найден. Попробовал все пути в качестве аргуманта(полные, относительные и т.д.)

Эту проблему можно какнить продиагностировать или у библиотечки gtk нет таких возможностей?

anonymous
()
Ответ на: комментарий от anonymous

Если файл не найден, то он действительно не найден. Можно попробывать полный путь указать. Можно

strace testapp

запустить, посмотреть вызовы операционной системы. Там будет видно, какой файл система пытается открыть и какой результат. Хотя в соляре он по другому должен называться. dtrace там или что.

welkam ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.