Генерация файла Vapi для библиотеки Vala

У меня есть библиотека, написанная на Vala, которая всегда работала нормально, генерируя .vapi файл для себя, я думаю, потому что это бесплатная операция с valac но я не уверен в этом. Я пошел и попытался использовать VAPIGEN_CHECK в моем configure.ac файл и связанный с ним VAPIGEN_MAKEFILE в моем Makefile.am и теперь я получаю:

error: The type name `GLib.TypeInstance' could not be found

Мой соответствующий .gir файл содержит:

<field name="parent_instance">
  <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
</field>

Так что ошибка, кажется, имеет смысл, потому что я не могу найти GObject.TypeInstance класс / структура в любом .vapi файл, но GTypeInstance находится в одном из заголовков GLib.

Должен ли я даже делать это таким образом, если я уже все пишу на Вала? Есть ли вероятность того, что это отсутствует в Вапи?

Изменить: возможно, только из-за того, что я не получил GLib.Object который я считал неявным. Все еще пытаюсь исправить что-то еще, что предотвращает это, но как только это будет сделано, я обновлю это, чтобы сказать, имеет ли это значение на самом деле.

1 ответ

Решение

Чтобы сгенерировать файл VAPI из программы Vala, вы должны просто использовать --vapi вариант с valacНапример:

valac --vapi my_library_name.vapi my_library.vala

Из того, что вы описываете, я думаю, что вы генерируете файл GIR (GObject Introspection Repository) с valacзатем с помощью vapigen создать файл VAPI. vapigen является частью Vala и поддерживается в исходном коде Vala, но это инструмент для создания файла VAPI для привязки к не-Vala проектам. Если не-Vala проект распространяет файл GIR, это делает привязку очень простой.

Когда используешь vapigen вам нужно предоставить пакеты, которые он использует, поэтому вам нужно убедиться, что вы включили правильные флаги pkg-config, например:

vapigen --pkg glib-2.0 --pkg gobject-2.0 my_library.gir

Другая возможность - нет привязки для GTypeInstance в Vala. Я быстро взглянул и ничего не нашел.

Другие вопросы по тегам