Генерация файла 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. Я быстро взглянул и ничего не нашел.