LINUX.ORG.RU

Gtk+,glade. Обновился, перестали подключаться обработчики.


0

0

Обновился до Debian Etch. Программа на Gtk+, использующая libglade, перестала работать - нормально компилируется, но при работе не подключает сигналы: при вызове glade_xml_signal_autoconnect() выводятся сообщения, что функции обработчики не найдены. Раньше все запускалось нормально.

В чем может быть причина?

anonymous

Выложи куда-нить сорцы (xml и подключающую программу), может, что-то станет понятно. Пишешь на C? Какую версию Glade раньше пользовал? Переход по части Glade состоялся со второй ветки на третью?

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

Пишу на C, кроме того использую кусок кода на C++.
Прототипы всех C-функций заключены в extern "C" {...}.

Версия libglade: сейчас 2.6.0, раньше 2.4.0.

Подключаю так:

gboolean create_XML (const char *glade_file, const char *glade_root, GladeXML **obtain_xml)
{
        char *full_fname = g_build_filename (PACKAGE_DATA_DIR,
                        PACKAGE, "glade", glade_file, NULL);

        *obtain_xml = glade_xml_new (full_fname, glade_root, NULL);
        g_free (full_fname);

        if (*obtain_xml) { glade_xml_signal_autoconnect (*obtain_xml);
                return TRUE;
        }
        return FALSE;
}

Сигналы объявлены так:
 <signal name="delete_event" handler="on_MainWindow_delete_event" last_modification_time="Sun, 05 Nov 2006 17:18:23 GMT"/>

Проблема, похоже, не в совместимости C/C++.
Сейчас написал простой "Hello, World" на C - такая же ситуация.

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

Дорогие мои, красноглазые и не очень, братья и сестры! Я нашел решение проблемы. Надо было добавить -export-dynamic к C-флагам. Наверное, это правило действовало всегда, но у меня и так работало, поэтому флага не было.

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