LINUX.ORG.RU

gtk4(или 3) под windows

 , msys64,


0

2

каюсь, второй день матерюсь и не могу пройти квест - собрать хоть что-нибудь gtk4 (hello_word) под windows.

строго по инструкции: поставлен с нуля msys64, тулчайн ucrt ; в качестве hello_word первый-же исходник с https://docs.gtk.org/gtk4/getting_started.html;

сборка тоже оттуда-же, из командной строки, без cmake.

но не работает :

GLib-WARNING (recursed) **: Failed to determine console output code page: Системе не удается найти у
казанный параметр среды.. Falling back to UTF-8

под отладчиком вот :

Thread 1 hit Breakpoint 1, main (argc=1, argv=0x2a6e0904260) at first.c:22
22        app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
(gdb) n
23        g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
(gdb)
24        status = g_application_run (G_APPLICATION (app), argc, argv);
(gdb)
[New Thread 13800.0x31ec]
[New Thread 13800.0xe40]
[New Thread 13800.0x191c]

GLib-WARNING (recursed) **: Failed to determine console output code page: Системе не удается найти у
казанный параметр среды.. Falling back to UTF-8[New Thread 13800.0xe54]
[New Thread 13800.0x6a0]
[New Thread 13800.0x3450]
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(1) tid(9e4) 80070002  .
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(2) tid(9e4) 80070002  .
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(3) tid(9e4) 80070002  .
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(4) tid(9e4) 80070002  .
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(5) tid(9e4) 80070002  .
warning: minio\profapi\registry.cpp(48)\profapi.dll!00007FFA407E4D19: (caller: 00007FFA388DC14C) Ret
urnHr(6) tid(9e4) 80070002  .

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffa40b1df73 in KERNELBASE!DebugBreak () from C:\Windows\System32\KernelBase.dll

сильно подозреваю, что каких-то опций при сборке нехватает, потому как gtk4-demo, gedit и прочие работают.

Что этой скотине в windows нехватило ??

★★★★★

Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от fsb4000

У меня всё работало без каких-либо плясок с бубном…

дык и у меня когда-то (весьма давненько правда) работало..

ну никак не ожидал такой затыки

всё страньше и страньше: ucrt vs wincrt ситуации не изменяет. даже более того - с gtk-3 ровно такая-же ерунда.

удалось лоцировать до «точка входа в FT_Get_Transform не найдена в бла-бла-бла/libharfbuzz-0.dll» ; то есть что-то про шрифты не хватило..

PS/ конечно после такого брать gtk на любой проект страшно, уже чисто принципиальный вопрос - какого лешего всё так

MKuznetsov ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

уже чисто принципиальный вопрос - какого лешего всё так

Как-бы авторы не скрывали, что тулкит делают в первую очередь для онтопика и только уже потом, по остаточному принципу, под остальное.

Ну и да, у GTK целая куча зависимостей, что тоже сборку не упрощает, мягко говоря.

«точка входа в FT_Get_Transform не найдена в бла-бла-бла/libharfbuzz-0.dll»

Harfbuzz и freetype точно не старые? FT_Get_Transform появился во freetype очень недавно (коммит) и, следовательно, FreeType >=2.11.1

SkyMaverick ★★★★★
()
Ответ на: комментарий от SkyMaverick

Harfbuzz и freetype точно не старые? FT_Get_Transform появился во freetype очень недавно (коммит) и, следовательно, FreeType >=2.11.1

точно всё новое..для чистоты - mingw64 взят максимально новый

mingw-w64-ucrt-x86_64-freetype 2.12.1-1
mingw-w64-x86_64-freetype 2.12.1-1
mingw-w64-ucrt-x86_64-harfbuzz 5.3.1-2
mingw-w64-x86_64-harfbuzz 5.3.1-2

путём неочевидных манипуляций (с ключиком -mwindows который по идее только про консоль и WinMain) удалось запустить hello_word, который с g_application_run.

Но с gtk_init() подобный фокус не удался.. где-то в недрах gtk_application_init(), g_application_run() очевидно производится правильная инициализация, не освещённая в документации :-(

но мне нужна именно отдельно инициализация и внешний event-loop..

MKuznetsov ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

ещё раз, по буквам - всё штатное

Не хотите показывать артефакты, как хотите, нам же меньше работы… 🙄

точка входа в FT_Get_Transform не найдена в бла-бла-бла/libharfbuzz-0.dll

«бла-бла-бла»? 🤔 Положите правильную версию harfbuzz рядом с бинарником, соответствующую той lib-е, которую ликновали при сборке проекта. Не может быть что-бы в SDK были либы одной версии, а библиотеки другой.

Такое ощущение, что у вас там винегрет из библиотек или лишние пути поиска, например, бесконтрольно набитый путями %PATH%.

raspopov
()
Ответ на: комментарий от MKuznetsov

удалось лоцировать до «точка входа в FT_Get_Transform не найдена в бла-бла-бла/libharfbuzz-0.dll» ; то есть что-то про шрифты не хватило..

PS/ конечно после такого брать gtk на любой проект страшно, уже чисто принципиальный вопрос - какого лешего всё так

Похоже на то, что сопровождающие msys2 не заморачиваются как в Debian с контролем версий и ABI-совместимости. Если pacman вообще это позволяет. Как раз несколько недель назад накопилось много пакетов для обновления. А нужно было один по-быстренькому. Запустил - не работает. В Debian в подобном случае получил бы предупреждение, что вот это одно обновление требует минимум обновление ещё каких-то пакетов. Если не соглашусь - то вообще не будет обновления, т.к. бессмысленно. Т.е. это, очевидно, не проблема GTK.

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