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

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

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

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

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

2

Решение

В настоящее время нет инструмента 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. Что касается других языков, документация будет варьироваться в зависимости от языка и реализации.

2

Другие решения

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

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

В качестве альтернативы есть GObject Consume а также Дым-GObject и то, и другое можно использовать для интеграции объектов GObject с C ++ через инфраструктуру Qt.

0

По вопросам рекламы [email protected]