2013-09-22 4 views
2

После обыска и работы в течение нескольких часов, я не мог получить, как статически связывать библиотеки с моим exe. Итак, я попытался скопировать зависимости в папку exe. Я сделал тестовую программу, которая изменила метку одним нажатием кнопки. Это было 14 мб. Что мне делать? Я использую icudt51.dll icuin51.dll icuuc51.dll libgcc_s_dw2-1.dll libstdC++ - 6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll Qt5WidgetsQt-файлы слишком большие.

+0

Вы не можете связать статически с .dll, вы имеете в виду, что вы связали динамически в конце? – brunocodutra

+0

Имейте в виду, что для связывания статически с библиотеками Qt ваш код должен быть лицензирован как GPL, так и LGPL, или вам необходимо заплатить коммерческую лицензию Qt. Если ваш код не соответствует одному из этих условий, вам не разрешается связывать статически с Qt. – syam

+1

Да, файлы Qt большие! – mox

ответ

6

только вещь, которую я вижу возможной, - использовать upx для сжатия вашего исполняемого файла. Вы даже не заметите разницы. Он быстро распаковывает и выполняет вашу программу.

http://upx.sourceforge.net/

4

Есть много решений вашей проблемы:

1- Использование Qt 4.8.5, существует не так много различий между Qt 5 и Qt 4.8. Это поможет вам, потому что Qt 4.8.5 не компилируется с поддержкой по умолчанию для QtWebkits, что означает отсутствие зависимости от icudt51.dll icuin51.dll icuuc51.dll файлов.

2 Если вы хотите использовать Qt 5, вам нужно будет перекомпилировать его с отключенным веб-кадром, что также избавит вас от вышеуказанных зависимостей. Для получения дополнительной информации проверить это: post

1

Если вы хотите связать Qt 5.1.1 статический как есть (без 3-пластырей партии), она работает только для в истоке строит. Статические сборки Shadow терпят неудачу из-за ошибки в клонировании zlib. Ускоренный простой исполняемый файл, который использует только виджеты, будет меньше 5 МБ, больше как 3 МБ. Он находится в одном и том же шаре для Qt 5 и Qt 4. Я собираю статически, используя MSVC2012, и он работает отлично. Это полные статические сборки, что означает, что библиотека Qt статична, а среда выполнения C/C++ также статична. Единственные зависимости находятся в системных DLL. Делает жизнь легкой для всех, хотя сборка релизов может занять несколько минут и забудьте о строительстве на 32-битной системе.

Время запуска статически построенных исполняемых файлов удивительно. Это почти мгновенно :)

Смежные вопросы