Использование привязок C++ с GObject Introspection

Я решил использовать Goffice библиотека в моем проекте. Но я пишу его на C++, поэтому я предпочитаю интерфейс класса C++, точно так же, как я использую gtkmm, а не GTK+ напрямую.

В документации (см. ссылку выше) сказано, что я могу использовать GObject Introspection. Поэтому я начал читать об этом. Я читал, читал и читал, и никак не мог понять, как пользоваться какой-либо привязкой GOffice. Я искал файл goffice gi-repository/typelib в своей системе и в списке файлов, установленных PackageKit. Ничего не нашел. Я проверил в PackageKit, зависят ли пакеты goffice или goffice-devel от пакета самоанализа gobject. Может быть, они зависят косвенно, но они не зависят от него напрямую (иначе я бы увидел его в списке).

Я пытался и пытался, но я не мог найти ресурс, который мог бы просто объяснить, как взять библиотеку, написанную в GObject, такую ​​​​как GOffice, и использовать ее на другом языке, например. Python или, в моем случае, C++. Конечно, я могу использовать функции C напрямую, но дело в том, что я хочу иметь интерфейс, похожий на gtkmm.

(Я использую GNU/Linux, пишу настольное приложение с gtkmm и системой сборки GNU, версия goffice 0.10)


person cfa45ca55111016ee9269f0a52e771    schedule 20.02.2013    source источник


Ответы (3)


В настоящее время нет инструмента GObject Introspection для C++. Вы можете просмотреть список пользователей по адресу https://live.gnome.org/GObjectIntrospection/Users. .

На основе одного из файлов автоматического создания GOffice имя GIR GOffice — это GOffice-0.10, поэтому вам следует ожидать $(pkg-config --variable=girdir gobject-introspection-1.0)/GOffice-0.10.gir и $(pkg-config --variable=typelibdir gobject-introspection-1.0)/GOffice-0.10.typelib, но возможно, что пакеты вашего дистрибутива не включают эти файлы, и в этом случае вы можете захотеть зарегистрировать ошибку.

Что касается документации по использованию GObject Introspection для Python, вам следует посетить сайт PyGObject. Они ссылаются на Учебное пособие по Python GTK+ 3, которое должно вам помочь. получить представление о том, как использовать PyGObject. Что касается других языков, документация будет различаться в зависимости от языка и реализации.

person nemequ    schedule 20.02.2013

cppgir — это генератор обёртки привязки GObject-Introspection C++ (также указан здесь).

Он легкий (прямая привязка), при желании его можно использовать встроенный (только заголовок), поэтому программа может напрямую ссылаться на любую библиотеку на основе GObject (GTK, GStreamer и т. д.).

Вы можете прочитать дополнительную информацию в README и документация.

person Sadeq    schedule 12.04.2019

gtkmm, glibmm и другие библиотеки -mm в настоящее время все еще используют инструмент gmmproc для создания привязок для библиотек на основе GObject. Этот инструмент старше, чем GObject Introspection (GI считается стабильным с GTK+ 3) и требует ручной работы по написанию заголовков со специальными макросами, которые будут использоваться инструментом для генерации исходного кода C++. Дополнительные сведения и инструкции см. в разделе Обертывание C Библиотеки с gmmproc.

Что касается автоматического создания привязки C++ с помощью GObject Introspection, я нашел только один WIP: gi-mm.

В качестве альтернативы есть GObject Consume и Smoke-GObject, которые можно использовать для интеграции GObjects с C++ через Qt framework.

person user    schedule 25.03.2014