Ответ 1
ОБНОВЛЕНИЕ: используйте windeployqt.exe
! Он работает очень хорошо.
http://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool
Самый простой способ использования windeployqt - добавить каталог bin вашу Qt-установку (например,) в переменную PATH, а затем запустите:
windeployqt <path-to-app-binary>
ОБНОВЛЕНИЕ: при дальнейшем тестировании windeployqt
не копировал все DLL файлы MingW для меня. (Протестировано с Qt 5.4 в Windows 10 с помощью MingW 4.9.1). Поэтому перед развертыванием необходимо вручную загрузить последние 3 dll:
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
С
C:\Qt\5.4\mingw491_32\bin
Я думаю, что у вас может быть несколько дополнительных функций в вашем списке... Я бы дважды проверял документы в ссылках ниже...
Вот окончательная документация по нему:
http://doc.qt.io/qt-5/windows-deployment.html
http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies
Размер Qt DLL
Удивительные библиотеки Qt могут многое сделать, но они довольно большие. Некоторые из старых версий Qt могут быть немного меньше.
Для Qt 4.8 msvc QtCore4.dll
- 2,5 МБ, а QtGui4.dll
- 8,4 МБ.
Как Windows разрешает общие библиотеки/библиотеки динамических ссылок (DLL)
Вот как Windows отслеживает библиотеку во время выполнения:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
Single Small EXE
Если вы статически связываете, то ваш EXE должен захватить библиотеки, которые ему нужны, и будет встроен в автономный exe. Он все еще может зависеть от msvc-распределяемых. Дополнительную информацию об этом см. В следующем разделе. Но теперь он компилирует .lib
, который вы ссылаетесь на ваш EXE, и ваш exe больше не указывает на другие динамически связанные библиотеки. Требуется больше времени для установки вашей статической привязки среды exe.
Ваш exe, безусловно, станет больше, поскольку теперь он включает двоичную информацию для библиотек, на которые вы ссылались ранее.
https://www.google.com/search?q=qt+static+linking
EDIT:
Статическое построение exe, означает, что вы не используете версию LGPL.
означает, что вы должны иметь доступ к своим объектным файлам для конечных пользователей, если вы используете LGPL.
Я думаю, что @peppe описал это хорошо (см. комментарий ниже):
Технически, вам разрешено статически связывать при использовании Qt под LGPL, даже если ваше приложение не использует LGPL. Единственное сложное требование - сохранить способность третьей стороны повторно привязать ваше приложение к другой версии Qt. Но вы можете легко это выполнить, f.i. предоставляя огромный файл объекта (.o) вашего приложения, который должен быть связан только с любой версией Qt.
http://blog.qt.io/blog/2009/11/30/qt-making-the-right-licensing-decision/
Посмотрите на диаграмму внизу. Если вы делаете коммерческую версию, вы можете статически ссылаться, не беспокоясь об объектных файлах.
Распространяемые MSVC
Распространяемые зависимости связаны с параметрами компоновщика библиотеки времени выполнения.
http://msdn.microsoft.com/en-us/library/aa278396(v=vs.60).aspx
/MD, /ML, /MT, /LD
(Использовать библиотеку времени выполнения)
Чтобы найти эти параметры в среде разработки, нажмите "Настройки" в меню "Проект". Затем перейдите на вкладку C/С++ и нажмите "Генерация кода" в поле "Категория". См. Раскрывающийся список "Использовать библиотеку времени выполнения".
В этих двух ссылках ниже рассказывается о некоторых старых версиях визуальной студии, но рассуждения все равно должны стоять.
http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html
Как создать полностью статически связанный файл .exe с Visual Studio Express 2005?
Надеюсь, что это поможет.