AndreyHudz90
@AndreyHudz90
student

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

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

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

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

Вот я никак не пойму, неужели нельзя было изначально сделать так, что бы не было этого гемороя, или я чего то не понимаю?
  • Вопрос задан
  • 538 просмотров
Решения вопроса 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), то еще пара спец. библиотек нужна.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы