Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.11.2022
Сообщений: 1

Как скомпилировать C++ GTK3 приложение для конечного пользователя

27.11.2022, 15:36. Показов 390. Ответов 0
Метки c++, gtk3 (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю C++, а заодно и GTK.

Написал приложение под Linux. Все прекрасно работает, вопросов нет.
Но GTK вроде как мультиплатформенный, так что встал у меня вопрос а как сделать это приложение для windows.

Скачал msys2. Установил нужные библиотеки.

Приложение компилируется и если его положить в директорию bin (где находятся все бинарные файлы у msys2) - все прекрасно работает.

Но встает вопрос, а как мне сделать приложение для конечного пользователя.
Тоесть... Пользователь не будет гуглить 10 лет, чтобы понять как ему установить msys2 и кучу библиотек через консоль.

Первое что пришло в голову это взять необходимые dll и просто поместить их рядом с файлом.
Но всплыло две проблемы:
1) dll очень много и получается большой список. Было бы не плохо поместить их в отдельную директорию. Чтобы пользователь, распаковав файл, видел exe файл и директорию с библиотеками.
2) Как бы я не пытался программа выдает ошибку Gtk:PixbuffError на этой строке:

C++
1
ui->set_icon(Gdk::Pixbuf::create_from_resource("/logo.ico"));
Я пробовал смотреть через программу какие dll использует приложение.
Но так и не смог найти чего ему не хватает. Напомню, что в директории bin все работает корректно.
Когда эту строку убираешь, то оно работает прекрасно. Тоесть какой то dll или файла явно не хватает. А какого не могу понять.

Когда с этим способом я разочаровался, я попробовал другой. Статически скомпилировать все в один файл. Нагуглил у g++ параметр --static, но тот выдает много ошибок по типу

Code
1
undefined reference to `__imp_g_utf8_skip'
Немного погуглив нашел ответы, что нужно скомпилировать библиотеку GTK в статику и использовать ее, чтобы скомпилировать все в один файл.

Но и тут я наткнулся на проблему. Использовал следующий репозиторий:
https://gitlab.gnome.org/GNOME... tkmm-3-22/

Вызывал следующие команды:

Bash
1
2
3
./autogen.sh
./configure --build=amd64-pc-mingw64 --enable-static
make
Но в make получаю следующее:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
make  all-recursive 
make[1]: Entering directory '/d/gtkmm-3-24' 
Making all in tools 
make[2]: Entering directory '/d/gtkmm-3-24/tools' 
  CXX      extra_defs_gen/generate_defs_gdk.o 
  CXXLD    extra_defs_gen/generate_defs_gdk.exe 
  CXX      extra_defs_gen/generate_defs_gtk.o 
  CXXLD    extra_defs_gen/generate_defs_gtk.exe 
make[2]: Leaving directory '/d/gtkmm-3-24/tools' 
Making all in gdk/gdkmm 
make[2]: Entering directory '/d/gtkmm-3-24/gdk/gdkmm' 
make[2]: *** No rule to make target 'applaunchcontext.cc', needed by 'applaunchcontext.lo'.  Stop. 
make[2]: Leaving directory '/d/gtkmm-3-24/gdk/gdkmm' 
make[1]: *** [Makefile:749: all-recursive] Error 1 
make[1]: Leaving directory '/d/gtkmm-3-24' 
make: *** [Makefile:543: all] Error 2

Кароче говоря и этот путь оказался для меня тупиковым. Гугл нормальных ответов мне не дал.
Поэтому я с разочарованием пишу сюда. Может кто-нибудь здесь сможет мне помочь?

Моя задача скомпилировать приложение так, чтобы пользователь скачал архив с программой и запустил в ней exe файл и он сразу заработал. Без необходимости устанавливать приложение или скачивать какие то сторонние библиотеки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2022, 15:36
Ответы с готовыми решениями:

Как в MacOS скомпилировать приложение для Linux?
Разрабатывается консольное приложение для сервера под управлением Ubuntu.. как правильно его скомпилировать из MacOS?

Как скомпилировать С# приложение, для работы без .NET Framework
Доброго времени суток вам! Вопрос в том, что нужно написать приложение на чистом С#, но скомпилировать так, чтоб можно было запускать его...

Как скомпилировать из консоли на linux hello world приложение для Android?
Как скомпилировать из консоли на linux "hello world" приложение для Android, и запустить, получившийся apk-файл на...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2022, 15:36
Помогаю со студенческими работами здесь

Браузер MYSQL на PHP для конечного пользователя
Доброго дня! Требуется браузер MYSQL (типа phpmyadmin/chive) на PHP для конечного пользователя. Т.е. удобный интерфейс, возможность...

Как можно скомпилировать win32 приложение в win32 приложение без консоли с помощью g++?
Как можно скомпилировать win32 приложение в win32 приложение без консоли с помощью g++? Например по нажатии на кнопку. Объясните только...

Как скомпилировать приложение
можно ли пере конвертировать vb в файл .exe ?

Как скомпилировать приложение?
Здравствуйте. Подскажите пожалуйста как получить готовый exe файл используя Qt Creator.

Как скомпилировать приложение
Здравствуйте ) я начинающий, и прошу помощи как скомпилировать релиз ? Пишу проги , но хочу перенести на другую машину, надо Net поставить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru