Я играл с привязками D-Bus GLib, пытаясь заставить что-то ( что-нибудь ) работать с очень ограниченным успехом.Я пытался получить пример кода Росса Бертона для компиляции и запуска, но продолжаю сталкиваться с новыми и захватывающими трудностями.
Можете ли вы помочь отладить этот код или, если это не удалось, укажите мне накакой-нибудь пример кода D-Bus GLib, который работает?
Поскольку код Росса устарел, я заменил строку
dbus_g_object_class_install_info (G_OBJECT_CLASS (echo_class), &dbus_glib_echo_object_info);
на
dbus_g_object_type_install_info (G_OBJECT_TYPE (echo_class), &dbus_glib_echo_object_info);
за его комментарии к этой статье, но не сделал никаких других изменений, кроме как обновить каталоги включения, чтобы они соответствовали настройкам на моем компьютере.
При запуске исполняемого файла сервера я получаю следующую ошибку:
** (process:11747): CRITICAL **: dbus_g_object_type_install_info: assertion `G_TYPE_IS_CLASSED (object_type) || G_TYPE_IS_INTERFACE (object_type)' failed
Трассировка стека на данный момент, согласно gdb, равна
#0 0x0000003b5f40b440 in dbus_g_object_type_install_info () from /usr/lib64/libdbus-glib-1.so.2
#1 0x0000003b5722909c in g_type_class_ref () from /lib64/libgobject-2.0.so.0
#2 0x0000003b57229798 in g_type_create_instance () from /lib64/libgobject-2.0.so.0
#3 0x0000000000400f16 in main (argc=<value optimized out>, argv=0x7fff156497d8) at EchoObject.c:111
Я не уверен, что идет не так, или какие дальнейшие шаги должны быть в отладке.Я хотел бы получить базовый код, отправляющий и получающий сообщения о вызовах метода D-Bus, чтобы я мог видеть, как все должно работать в моем приложении.
Я использую D-Bus 0.73.
Обновление : Учитывая отсутствие успеха с моей стороны и отсутствие отклика здесь, я сейчас собираюсь отказаться от D-Bus и найти какой-то другой механизм IPC.
Обновление 2 : В конце я остановился на подходе с именованными сокетами Unix, который делает именно то, что мне нужно, в общей сложности 280 строк кода (плюс тестовый код).