AndreyHudz90
@AndreyHudz90
student

Как сделать Qt static?

Не запускается приложение собранное на Qt5.5.1 MinGW
0638d8e823ce4d3b83456d7acfd8bb00.png

Как я понимаю нужно сделать Qt статичным.

1. Как это сделать?
2. Почему вообще это требуется делать?

Вот я никак не пойму, неужели нельзя было изначально сделать так, что бы не было этого гемороя, или я чего то не понимаю?
  • Вопрос задан
  • 435 просмотров
Решения вопроса 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Платиновый вопрос.

1. Как это сделать?

Сделать это можно собрав Qt из исходников с необходимыми ключами конфигурации. Руководств в сети много.

2. Почему вообще это требуется делать?

Делать этого не требуется в общем случае. Вам необходимо просто собрать бинарные версии библиотек (dll) в папке рядом с вашим исполняемым файлом (одна из них - модуль Qt5Widgets.dll, о которой вам говорит ошибка). Это динамическая линковка библиотек.

Для удобства вы всегда можете воспользоваться windeployqt (для Windows), который соберет все необходимые файлы в одно место или просто отыскав и сложив их вручную (проанализировав зависимости процесса под отладкой в IDE с помощью Process Explorer или специальной утилитой - DependencyWalker)

Чтобы все необходимые модули Qt "вкомпилировались" в ваш исполняемый файл (статическая линковка), вам нужно собрать версию Qt, которая это поддерживает (но она не распространяется в виде готового бинарного пакета, потому из исходников).

Ну и статическая линковка при прочих равных нарушает community-лицензию Qt, если с программой не распространять открытый исходный код (нужно дать возможность пользователю заменить версию Qt динамически, либо собрать программу с ним заново).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Zifix
@Zifix Куратор тега Qt
Barbatum
Вы чего-то не понимаете. Не понимаете, что такое библиотека, как работает линкер. Учите матчасть.

Hint: windeployqt
Ответ написан
Rou1997
@Rou1997
Не надо статическим, проще в директорию EXE-файла добавить все нужные библиотеки, сначала DependencyWalker для обычных зависимостей, там библиотеки Qt, и еще Microsoft Visual C++ или GCC, затем разбирайтесь с зависимостями, которые загружаются "на лету", например, плагинами, чтобы определить, какие плагины нужны, переименуйте (удалите) у себя папку C:\Qt, в заключение на "чистом" компьютере проверьте, скажем для сетей если SSL (HTTPS, SMTP), то еще пара спец. библиотек нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы