Компиляция статического приложения QT в Windows - PullRequest
1 голос
/ 07 января 2012

Я новичок в QT и наслаждаюсь этим, за исключением того факта, что мне не удается статически связать библиотеку QT с выходными двоичными файлами. Когда я запускаю выходной файл вне каталога QT, я получаю The program can't start beacuse QtCored4.dll is missing. Очевидно, QT динамически связывает свои библиотеки и запрашивает .dll, которой у меня нет. Есть ли способ статической компиляции библиотек QT в статический двоичный файл, так что ни одна из библиотек QT не требуется? Я спрашиваю об этом, потому что у меня уже есть 11 .dll для моего проекта, и я действительно хотел бы сократить количество файлов, которые должны распространяться с моим программным обеспечением. Размер не проблема для меня. Благодаря.

Я пытался добавить CONFIG += static в файл .pro, но безрезультатно.

Ответы [ 2 ]

3 голосов
/ 07 января 2012

Во-первых, вы не можете статически связать Qt, если не купили коммерческую лицензию.Это может привести к нарушению лицензии LGPL, по которой распространяется некоммерческая версия.Я чувствую вашу боль, у меня есть много, много DLL, которые идут с моим программным обеспечением.

К счастью, у вас, вероятно, есть DLL, если вы использовали установщик: вам не нужно собирать из исходного кода, чтодолжно было быть сделано автоматически.Вы найдете их в Qt \ Version \ bin, где Qt - это установленный вами каталог Qt, а version - это версия установленного вами Qt.Например, мой находится в G: \ Libraries \ Qt \ 4.7.1 \ bin.

У меня, однако, были некоторые проблемы с отсутствием одной из встроенных библиотек DLL - одной для работы с OpenGL - ивыполнил восстановление, чтобы сделать это.Я также сделал это, когда я переключил версии Visual Studio.Я думаю, что это удобно, это просто, откройте терминал в каталоге Qt и выполните:

configure.exe -platform XXX'

Где XXX обозначает тип сборки, которую вы хотите выполнить.Допустимые параметры: win32-msvc2005, win32-msvc2008, win32-msvc2010.Поэтому я использую:

configure.exe -platform win32-msvc2010'

Другие параметры подробно описаны здесь .Эти инструкции применимы, если вы скачали исходный код, однако вам, возможно, придется добавить текущий каталог в переменную path следующим образом:

set PATH=%cd%\bin;%PATH%

Вся процедура должна занять около часа.

2 голосов
/ 07 января 2012

Вам необходимо скачать исходный пакет QT и скомпилировать его. Это занимает некоторое время, но не очень сложно.

  • Загрузите и распакуйте исходный код QT
  • Запустить оболочку компилятора (Visual Studio или mingw)
  • Выполнить конфигурацию в исходном каталоге QT - добавьте флаг для статической компиляции здесь
  • выполнить make (Visual Studio nmake)
  • Подождите несколько часов в зависимости от скорости вашей машины
...