#c #windows #windows-10 #gtk #gtk3
#c #Windows #windows-10 #gtk #gtk3
Вопрос:
В настоящее время я не могу успешно запустить приложение, которое я успешно создал с помощью Meson. Для установки GTK я выполнил шаги, доступные здесь, чтобы установить его. Кроме того, я добавил путь C:msys64mingw64bin
к своему path.
Внутри этого пути я смог успешно запустить приложения gtk-demo.exe
, gtk3-demo.exe
и gtk3-demo-application.exe
, что указывало бы мне, что оно успешно установлено.
Я намеревался создать пример приложения, представленный в руководстве по Meson:
#include<gtk/gtk.h>
int main(int argc, char **argv) {
GtkWidget *win;
gtk_init(amp;argc, amp;argv);
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(win), "Hello there");
g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show(win);
gtk_main();
}
Запустив ninja
в моем builddir
, я получаю следующий вывод:
[1/1] Linking target test.exe.
LINK : warning LNK4044: unrecognized option '/-no-undefined'; ignored
LINK : warning LNK4044: unrecognized option '/-as-needed'; ignored
LINK : warning LNK4044: unrecognized option '/-start-group'; ignored
LINK : warning LNK4044: unrecognized option '/luuid'; ignored
LINK : warning LNK4044: unrecognized option '/-end-group'; ignored
Однако при его запуске я сталкиваюсь со следующей ошибкой:
Не удалось найти точку входа процедуры g_application_get_type в библиотеке динамических ссылок C:Usersmeprojbuilddirtest.exe .
Решив, что это проблема, вызванная попаданием в DLL-ад, я проверил свой path (нормально) и скопировал все библиотеки gtk DLL, которые смог найти в каталоге bin, в локальный builddir. Это тоже не сработало.
Я в растерянности — я просто хотел бы заставить это работать! Что я должен попытаться сделать, чтобы исправить это?
Ответ №1:
По общему признанию, это была очень сложная проблема для решения, и задать ее таким образом, чтобы получить ответ, было еще сложнее.
После нескольких дней удаления того немногого, что у меня осталось, я удалил builddir
, переместил mingw64
двоичный путь выше в моей среде и приступил к его восстановлению.
Как оказалось, это, похоже, проблема с серверной частью clang, использующей ninja. Переключение серверной части на gcc
(посредством перемещения mingw64/bin
папки вверх) волшебным образом устранило проблему, несмотря на то, что я ничего не удалял из своих переменных окружения.
Я действительно ненавижу magic — но у меня нет дополнительных объяснений этому или причины, по которой clang
произошел бы сбой и gcc
сработало бы. Если бы кто-нибудь мог предложить улучшенный ответ, это было бы здорово. Я не мастер компиляции в отношении различных серверных частей C / C .