LINUX.ORG.RU

Генерация gir-файла

 


0

2

Привет всем! Модераторам - Возможно вопрос помещен не совсем в ту категорию, так как он связан больше с mingw. Если это так, то удалю или перемещу сообщение.

Вопрос следующий:

Разработана библиотека libfoo с использованием glib, которая успешно собирается и под Linux (в частности Debian 7 и 8), и под Win 7. Библиотека динамическая ( под Linux - libgpfoo.so, под Win - libgpfoo.dll ). Понадобилось сгенерировать для этой библиотеки gir-файл. Под Linux'ом g-ir-scanner генерит без ошибок gir-файл. libtool не используется, то есть сканер запущен с опцией --no-libtool. Под Win работа делалась под mingw64 (консоль и доступ к ним через shell пакета msys2).

Под Win выдает ошибку:

ERROR: can't resolve libraries to shared libraries: gpfoo

Был перелопачен гугль вдоль и поперек. Прочитан баг 699442 на bugzilla.gnome этого сканера, где советуется при такой ошибке использовать ключ --no-as-needed. Библиотека в опции --library указана без префикса и суффикса, как написано в man'e g-ir-scanner без использования libtool. Безрезультатно.

В mingw стоят пакеты:

mingw-w64-x86_64-gobject-introspection 1.46.0-1
mingw-w64-x86_64-gobject-introspection-runtime 1.46.0-1
mingw-w64-x86_64-glib2 2.46.0-1

Генерация выполнялась так:

C:/msys64/mingw64/bin/g-ir-scanner --c-include=gp-foo.h --warn-all --add-include-path=C:/msys64/home/user/libgpfoo../girepository/ 
--namespace=GpFoo --nsversion=2.0 --identifier-prefix=Gp --symbol-prefix=gp --no-libtool --library=gpfoo 
--include=GObject-2.0 --include=GLib-2.0 -IC:/msys64/home/user/libgpfoo/inc -LC:/msys64/mingw64/lib -LC:/msys64/home/user/libgpfoo/bin 
C:/msys64/home/user/libgpfoo/inc/gp-foo.h C:/msys64/home/user/libgpfoo/src/gpfoo/gp-foo.c 
--output C:/msys64/home/user/libgpfoo/../girepository//GpFoo-2.0.gir
ERROR: can't resolve libraries to shared libraries: gpfoo

Подскажите или направьте куда копать, чего я упускаю?

PS. На всякий случай под Linux gir-генерился так:

/usr/bin/g-ir-scanner --c-include=gp-foo.h --warn-all --add-include-path=/home/user/libgpfoo/../girepository/ 
--namespace=GpFoo --nsversion=2.0 --identifier-prefix=Gp --symbol-prefix=gp --no-libtool --library=gpfoo --include=GObject-2.0 
--include=GLib-2.0 -I/home/user/libgpfoo/inc -L/home/user/libgpfoo/bin /home/user/libgpfoo/inc/gp-foo.h /home/user/libgpfoo/src/gpfoo/gp-foo.c 
--output /home/user/libgpfoo/../girepository//GpFoo-2.0.gir

Вопрос частично решен с указанием сканеру пути через переменную LIBRARY_PATH к libfoo.dll.a.

Coald365 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.