Qt как сделать исполняемый файл

Обновлено: 21.11.2024

объяснить: соответствующие операции в этом документе основаны на операционной системе Windows10 + платформе приложений Qt (5.14.1) + интегрированной среде разработки Qt Creator (4.11.1) + среде компиляции MinGW, запросе версии Qt и IDE для (Строка меню Qt Creator → справка → О Qt Creator).

Прежде чем упаковать издателя, нам может понадобиться сначала предоставить исполняемой программе (файл .exe) красивый значок. Во-первых, мы знаем, что можно передать свойство «Qt Creator IDE→ Design → attribute →windowIcon», чтобы напрямую установить значок основной формы после запуска программного обеспечения, или напрямую через setWindowIcon(QIcon(" Ваша картинка путь")) Функции тоже можно задавать. Но чтобы установить сгенерированный значок файла .exe, необходимо выполнить следующие шаги.

  1. Выберите тот, который подходит для вашей программы. Значок .ico , рекомендуемый веб-сайт: библиотека векторных значков Alibaba (бесплатно), загрузите его и поместите в папку вашего проекта.
  2. создайте новый текстовый файл myApp.txt, введите следующую строку кода:
    1. Затем измените суффикс myApp.txt → myApp.rc ( Вы также можете напрямую добавить файлы ресурсов IDE в «Добавить новый→Qt→Файл ресурсов Qt»), Поместите файл в папку проекта и добавьте его в проект (Добавить существующий файл в проект) ).
    2. Дважды щелкните файл проекта и добавьте в конец следующую строку кода:
      1. И последнее. Просто перестройте и запустите программу.

      В зеленой переносной версии есть папка. Эту папку можно скопировать в любую папку Windows. На системном компьютере двойным щелчком. Файл .exe запускается напрямую. Установка Qt Environmental Science не требуется. Предположим, вы создали новую папку «GreenSoftwarePack». Шаги следующие:

      Настройте режим работы компиляции проекта на Release, как показано на рисунке ниже.

      После сборки и запуска программы, соответствующая папка сборки на основе версии версии.

      Введите. В этой папке отпустите папку, найдите файл «имя проекта .exe», будет .exe. Скопируйте файл в папку Green Portable «GreenSoftwarePack». здесь, если вы устанавливаете Qt, пути различных библиотек добавляются в переменную среды, дважды щелкните файл. На вашем локальном компьютере исполняемый файл может работать успешно, но копирование файла непосредственно на чужой компьютер не может быть запущено, из-за отсутствия соответствующих файлов динамической библиотеки, копирование различных необходимых файлов библиотеки вручную также является решением, но нет такая вещь ( •̀ ω •́ )y .

      Итак, Qt я взял с собой копию .exe Инструменты для программно-зависимых библиотек —— windeployqt . Нажмите Win+Q Key search qt , Вызовите свой компилятор , Я использую MinGW , Если вы устанавливаете Qt Когда приложение framework bin Каталог добавляется в переменную окружения , Вы также можете выполнять следующие операции прямо через консоль .

      Введите следующую команду: перейдите к пути к папке, в которую вы хотите упаковать (то есть в папку с зеленым мешком, только что созданный GreenSoftwarePack).

      1. Введите команду: windeployqt ***.exe, среди ***.exe Ваше имя файла .exe .windeployqt Инструмент поместит exe Скопируйте файлы библиотеки, от которых зависит программа, в эту папку.
      2. В нормальных условиях в настоящее время папку Green Portable можно скопировать на другие машины и запустить в обычном режиме. Однако также возможно, что приглашение на других машинах по-прежнему отсутствует xxx.dll. , это нужно вручную dll скопировать файлы в эту папку .
      3. Другая ситуация: при использовании SQLite. Когда дело доходит до баз данных, даже если вы выполняете описанные выше шаги для всех связанных с базой данных .dll, скопированных в папку, однако все функции, связанные с базой данных, по-прежнему недоступны. Теперь сначала проверьте, был ли установлен файл вашей базы данных, то есть успешно ли вы создали xxx.db, если файл базы данных был успешно создан, это может быть проблема в исходном коде, отлаживайте шаг за шагом, если ни один из файлов базы данных не создан успешно, пожалуйста, обратитесь к моему блогу :( метод в блоге может также применяться к другим xxx.dll Ситуация, которая не существует )
        Qt .exe Упаковка и публикация файлов ,SQLite База данных недоступна ? Скопированная dll Тоже не хорошо. ?

        Зеленая портативная версия предоставляет исполняемый файл .exe в формате. Запустите exe. Вы можете установить программное обеспечение в соответствии с мастером. Зеленая портативная версия выше была успешно реализована, Дважды щелкните по ней exe Файл может работать нормально, И проблем нет. Учебник по упаковке показан ниже:

        Во-первых, нам нужно небольшое программное обеспечение: Inno Setup. Программное обеспечение Windows. Программа предоставляет бесплатный дизайн программы установки. Она также поддерживает изменение этапов проектирования программы установки в виде сценария. Inno Setup В 1997 г. Впервые запущен в 1997 г. Сегодня он сравним со многими коммерческими установщиками с точки зрения набора функций и стабильность , Даже больше , чем многие . Поддержка с 2006 г. Каждый год, начиная с выпуска Windows, включая последнюю версию Windows 11.
        Официальный адрес загрузки: Inno Setup Официальный адрес загрузки. После загрузки вы можете установить его шаг за шагом.

        После успешной установки , Запустите программное обеспечение , Закройте экран приветствия , Нажмите «Файл>Создать…», а затем нажмите 【Далее】.

        Следуйте подсказкам, чтобы ввести имя приложения, выпуск, издатель, веб-сайт, а затем нажмите 【Далее】. Эта информация будет сгенерирована позже в сценарии. Вы можете изменить ее позже с помощью сценария.

        Укажите выходной путь к файлу пакета и имя выходной папки, а затем нажмите 【Далее】.

        В настоящее время используется зеленая портативная версия выше. Сначала добавьте исполняемый файл приложения, которое вы хотите упаковать. Вот и все. .exe, затем добавьте все зависимые файлы динамической библиотеки, файл ресурсов, файл конфигурации, как показано в красно-зеленом поле индикатора на рисунке ниже. (Вы можете поместить все необходимые файлы в одну папку, а затем нажмите Добавить папку), нажмите 【Далее】.

        Нажмите 【Далее】.

        Создайте параметры, связанные с ярлыками, выберите нужные, нажмите 【Далее】.

        выбор «Лицензионные документы», «Предустановочные файлы» (как показано слева на рисунке ниже «Документы Readme» и т. д., после запуска программы установки появится всплывающее окно), «Показать информацию после установки» и т. д. , Нажмите 【Далее】.

        Выбранный режим установки — установка. Для всех пользователей на компьютере. Или просто установите конфигурацию для текущего пользователя. Нажмите 【Далее】.

        Выберите язык установки, нажмите 【Далее】.

        выберите «Выходная папка компилятора», «Имя базового выходного файла компилятора», «Настройка файла значка» И «Установочный пароль», нажмите 【Далее】.

        Нажмите «Готово», «Начать генерацию сценария». Соответствующая информация в сценарии генерируется в соответствии с указанными выше настройками.

        После создания сценария вам будет предложено скомпилировать сценарий немедленно. Его можно скомпилировать напрямую. Вы также можете просмотреть и изменить некоторый контент. Не беспокойтесь о непонимании. посмотрите на модификацию,

        Если версия программного обеспечения обновлена ​​, Переупакован исполняемый файл приложения , Вы не можете повторить описанный выше процесс , Напрямую перенести предыдущую замену exe-файла , Затем запустите. С ранее сгенерированным файлом сценария, новой версией файлов установочного пакета exe, конечно, сценарий может быть немного изменен, например, версия программного обеспечения и другая информация.

        Конечным результатом компиляции сценария является exe. Файлы установочного пакета. Дважды щелкните exe. Установите файл, чтобы установить программное обеспечение. Установочный файл можно установить в любое время, когда работает Windows Machine.

        Я работал над компилятором Qt Creator, чтобы сделать простой текстовый редактор. Я сделал это, но теперь хочу сделать файл .exe этого проекта, но я не знаю, как сделать файл .exe в компиляторе Qt Creator. Кто-нибудь может помочь?

        4 ответа 4

        Существует инструмент, автоматически добавляющий библиотеки .dll в Windows.

        В командной строке перейдите в каталог qt bin. Это должно выглядеть примерно так: . \Qt\5.9.1\msvc2017_64\bin\ (я использую Visual Studio).

        Запустите windeployqt.exe в командной строке, указав расположение вашего проекта в качестве аргумента, например:

        Теперь my_project.exe будет иметь библиотеки .dll в том же каталоге и будет выполняться.

        Исполняемый файл создается компилятором при создании приложения. Чтобы узнать, где хранится исполняемый файл, загляните в

        Проекты (CTRL+5) -> Настройки сборки -> Общие -> Каталог сборки

        Здесь создатель Qt поместит сгенерированный .exe, если у вас включена теневая сборка. Если теневая сборка отключена, исполняемый файл будет храниться внутри самой папки проекта.

        От: Как создать исполняемый файл для приложения Qt? В основном вам нужно искать подпапку MinGW глубоко в дереве Qt, где находятся утилиты Qt, и копировать необходимые dll.

        Вот шаги, которые я выполняю, основанные на Qt 4.7.4, для упаковки приложения с правильными общими библиотеками.

        Допустим, вы установили Qt в папку c:\qtsdk. Откройте свой проект и скомпилируйте его в режиме выпуска. Перейдите в этот каталог: C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin -- он содержит все общие библиотеки. Библиотеки отладки заканчиваются на «d» — frex, QtCore.dll — это версия для релиза, а QtCoreD.dll — версия для отладки. Скопируйте по крайней мере эти файлы в каталог вашего выпуска (где находится ваш .exe):

        • mingwm10.dll
        • libgcc_s_dw2-1.dll
        • QtCore4.dll
        • QtGui4.dll

        Я только что создал, протестировал и развернул фиктивный проект таким образом.

        У меня была та же проблема, поэтому я использовал предложенный выше ответ: "Существует инструмент, который автоматически добавляет библиотеки .dll в Windows.

        В командной строке перейдите в каталог qt bin. Это должно выглядеть примерно так: . \Qt\5.9.1\msvc2017_64\bin\ (я использую Visual Studio).

        Запустите windeployqt.exe в командной строке, указав расположение вашего проекта в качестве аргумента, например:

        Теперь my_project.exe будет иметь файлы .dll в том же каталоге и будет выполняться. " но есть кое-что, что я сделал, так что это может помочь:

        в файле отладки вашего проекта уже есть исполняемая версия вашего приложения, если вы не можете ее найти, попробуйте ввести свойства в Qt Creator и отследить файл. пока вы находитесь в свойствах, вы также можете увидеть, использует ли ваше приложение msvc2017_64, как в предыдущем ответе, или другие компиляторы.

        когда вы попытаетесь открыть исполняемый файл, ему потребуются некоторые DLL-файлы, которые вы можете найти по этому пути.\Qt\5.9.1\msvc2017_64\bin скопируйте и вставьте их в папку с исполняемым файлом

        Перейдите в каталог, где установлен Qt, и введите точное имя в строке поиска (вверху справа в Windows 7), и dll должна появиться в результатах поиска. Щелкните правой кнопкой мыши и выберите расположение открытого файла. Скопируйте файл, в котором находится ваш exe. Дважды щелкните исполняемый файл еще раз.

        Что создает исполняемый файл?

        Если вы хотите создать свои собственные исполняемые файлы в Windows, вы можете это сделать, но это не так просто, как переименовать файл и добавить .exe в его конец. Вам нужно будет закодировать программное обеспечение, которое вы хотите запустить, на выбранном вами языке программирования, а затем скомпилировать его в виде файла, который можно будет выполнить.

        Как создать простой исполняемый файл?

        Как создать EXE-пакет:

        1. Выберите нужную папку программного обеспечения в библиотеке программного обеспечения.
        2. Выберите задачу «Создать пакет приложения»> «EXE-пакет» и следуйте указаниям мастера.
        3. Введите имя пакета.
        4. Выберите исполняемый файл, например файл setup.exe.
        5. Укажите параметры выполнения в параметрах командной строки.

        Как опубликовать EXE-файл?

        Настройте следующие параметры:

        1. Тип публикации. В качестве типа публикации выберите исполняемый файл Windows (*.exe).
        2. Название проекта. Введите имя исполняемого файла без расширения (.exe/.
        3. Местоположение. Введите полный путь к папке, в которой нужно сохранить файл, или нажмите кнопку "Обзор", чтобы найти папку.
        4. Значок.

        Как опубликовать несколько проектов в Visual Studio 2019?

        Выполните следующие действия:

        1. Опубликовать основной проект. При развертывании основного проекта просто используйте значение по умолчанию.
        2. задайте виртуальный каталог. Мы все знаем, что веб-приложение по умолчанию будет развернуто на site\wwwroot, поэтому давайте создадим в нем подкаталог для развертывания нового проекта.
        3. развернуть другой проект на том же веб-сайте.

        Как опубликовать решение Visual Studio?

        1. Запустите Visual Studio и откройте существующий проект веб-приложения.
        2. В обозревателе решений щелкните правой кнопкой мыши свое веб-приложение и выберите "Опубликовать веб-приложение".
        3. В окне мастера публикации выберите «Профиль» и выберите «Импорт» в меню «Выбор объекта публикации».

        Что означает FT в тексте?

        FT означает «F*** That» или «For Trade». Итак, теперь вы знаете, что FT означает «F*** That» или «For Trade» — не благодарите нас. ЮВ! Что означает ФТ? FT — это аббревиатура, аббревиатура или сленговое слово, объяснение которого приведено выше, где дается определение FT.

        Что означает TSF в медицинских терминах?

        Медицинская аббревиатура TSF

        < /tr>
        4 TSF Злоупотребление психоактивными веществами, психиатрия, зависимость
        2 TSF
        2 TSF Здравоохранение, Здоровье, Диагностика
        2 TSF Питание, наука о питании
        1 TSF Лечение, Алкоголь

        Что такое полная форма TSF?

        Что такое OD BD TDS?

        ОД. Ежедневно. БД. Два раза в день. TDS (или TD или TID)

        Что означает TSF, соус Twinz?

        Соусная фабрика

        Двойники с соусом действительно близнецы?

        На самом деле они не близнецы Валка и Санчо не близнецы сами по себе — то есть биологически. Однако в их крови течет тот же божественный соус.

        Почему гуляк с соусом такой насыщенный?

        По состоянию на 2021 год состояние Sauce Walka оценивается в 36 млн долларов. Этот собственный капитал оценивается по данным некоторых онлайн-ресурсов, таких как Forbes, IMDb , Wikipedia и других популярных виртуальных источников. Большая часть его денег приходит, потому что он профессиональный рэпер.

        Кому принадлежит TSF?

        Сколько стоит TSF?

        Каков собственный капитал Сосаманна? Сосаманн — 30-летний рэпер из Сплэштауна, Хьюстон, США, с состоянием, оцениваемым в 450 тысяч долларов. Он наиболее известен своей песней «Drip Nation», выпущенной в 2018 году. В его дискографию входят Sauce Eskobar (2016) и Sauce the World (2017).

        На кого подписано песо-песо?

        Сколько лет соусу Санчо?

        Акроним Определение
        TSF Шаблон формата потока< /td>
        TSF Чайная ложка (измерение)
        TSF Общая площадь (измерение)
        TSF Télégraphie Sans Fil (французский: бывший термин для радио)
        КРАТКИЕ ФАКТЫ
        Дата рождения 30 августа 1990 г.
        Место рождения Хьюстон, США
        Возраст 30 лет, 9 месяцев, 28 дней
        Гороскоп Дева

        Откуда соус Санчо?

        Сколько лет Сосаманну?

        Является ли Сосаман ФБО?

        Сосаманн: Это мой лейбл. ТСФ. Я генеральный директор, я и мой близнец.

        С кем подписан Сосаманн?

        Тейлор Банд Энтертейнмент

        Сколько стоит чистая стоимость соуса Walka?

        По состоянию на 2021 год собственный капитал Sauce Walka оценивается примерно в 3 млн долларов.

        Сколько стоит 21 Savage?

        Стоимость 21 Savage: 21 Savage – американский хип-хоп исполнитель, состояние которого составляет 12 млн долларов США.

        Оглавление

        Как мне создать исполняемый файл в Qt?

        Перейдите в каталог, где установлен Qt, и введите точное имя в строке поиска (вверху справа в Windows 7), и dll должна появиться в результатах поиска. Щелкните правой кнопкой мыши и выберите расположение открытого файла.Скопируйте файл, в котором находится ваш exe. Дважды щелкните исполняемый файл еще раз.

        Как заставить мой exe работать?

        Как создать EXE-пакет:

        1. Выберите нужную папку программного обеспечения в библиотеке программного обеспечения.
        2. Выберите задачу «Создать пакет приложения»> «EXE-пакет» и следуйте указаниям мастера.
        3. Введите имя пакета.
        4. Выберите исполняемый файл, например файл setup.exe.
        5. Укажите параметры выполнения в параметрах командной строки.

        Как развернуть программу QT в Windows?

        Разверните кроссплатформенное приложение Qt с помощью windeployqt

        1. Создать код Qt для выпуска.
        2. Создайте новую папку для хранения всех файлов, связанных с развертыванием, используя этот метод.
        3. Скопируйте двоичный файл выпуска в новую папку.
        4. Найти путь к windeployqt
        5. Добавить в переменную PATH среды пользователя.

        Как вы выпускаете Qt?

        <р>1. Разверните приложение с помощью windeployqt/linuxdeployqt

        1. Скомпилируйте двоичный файл в режиме выпуска.
        2. Откройте консоль разработчика Qt и введите windeployqt "C:\folder\of\your\executable" (для linuxdeployqt будет очень похоже)
        3. Все библиотеки, необходимые для запуска приложения на другом компьютере, копируются в папку вашего приложения.

        Где создается файл .exe в Qt Creator?

        Исполняемый файл создается компилятором при создании приложения. Чтобы узнать, где хранится исполняемый файл, загляните сюда. Здесь создатель Qt поместит сгенерированный .exe, если у вас включена теневая сборка.

        Как создать приложение Qt в Visual Studio?

        Загрузите исходные коды Qt, соберите и установите их с помощью nmake (используя командную строку Visual Studio из меню "Пуск" -> "Приложение" -> "Visual Studio 2008").

        Где мне скомпилировать Qt в режиме выпуска?

        Допустим, вы установили Qt под c:qtsdk. Откройте свой проект и скомпилируйте его в режиме выпуска. Перейдите в этот каталог: C:QtSDKDesktopQt4.7.4mingwbin — он содержит все общие библиотеки.

        Хорошо, я знаю, что сказал, что хочу сделать учебник о том, как автоматически позиционировать и автоматически изменять размер виджетов, когда окно развернуто. Но, как обычно, возникает что-то еще более важное — распространение исполняемого файла среди друзей или запуск исполняемого файла вне Qt.

        Я только что научился создавать приложения для Windows с помощью Qt. Я сделал небольшой инструмент для собственного использования. А потом я узнал, что мой друг тоже любит его использовать. Но я не могу просто скопировать EXE и передать своему другу. Он просто не запустится! Почему?

        У вас был этот вопрос? Я тоже!

        Я привык иметь автономный EXE-файл при разработке приложения для Windows, так как раньше использовал Lazarus и Delphi. В XCode у нас также есть отдельный исполняемый файл. (ипа). Поэтому, когда я столкнулся со странным EXE-файлом, который не мог выполниться, моя реакция была «ЧТО ЭТО ЗА ДЕРЬМО!», лол! Как оказалось, исполняемый файл, написанный на Qt, требует для своей работы дополнительных файлов. Такие файлы, как .dll (динамические библиотеки Windows), любые используемые вами файлы .ini и другие связанные файлы. И, кроме того, приложение Qt имеет 2 области, на которых оно основано (которые вы можете выбрать, но, вероятно, вы не заметили) - сборка отладки и сборка выпуска. Эти 2 сферы типичны. В XCode это тоже есть. Разница в том, что с Qt и сборка Debug, и сборка Release НЕ являются исполняемыми сами по себе, для запуска требуется Qt. Глупо, верно? я знаю..

        Итак, как вы собираетесь распространять свое приложение среди друзей или на других компьютерах? Только для этой цели давайте сделаем немое приложение. Это будет пустое оконное приложение, которое ничего не делает. А почему бы и нет :D. Если вы не знаете, как создать пустое приложение, обратитесь к предыдущему руководству.

        1. ЗАСТАВКА EXE ЗАПУСКАЕТСЯ САМОСТОЯТЕЛЬНО

        После того как вы создали пустое приложение (типа виджета) и сохранили его в нужном месте, вы готовы продолжить. Во-первых, конечно, вы должны выбрать сборку Release.


        Затем попробуйте запустить его из Qt. Приложение должно запуститься и показать пустое окно. Теперь DumbApp.exe появится в папке Release. Но. дважды щелкните по нему, и ничего не происходит. Это означает, что приложению для запуска требуется Qt, и оно будет работать только из Qt. Разве это не глупо? ЛОЛ!

        В любом случае, как только вы подтвердите, что ваше приложение не содержит ошибок и может работать из Qt, вы можете перейти к следующему шагу — развертыванию вашего приложения qt с помощью инструмента windeployqt.exe. Откройте командную строку Dos, перейдите в папку с релизом и введите:

        C:\Qt — это место, где я устанавливаю свой Qt. Поэтому вам может понадобиться изменить это на вашу собственную папку Qt. Нажмите Enter, и программа обработает ваш exe-файл и скопирует связанные файлы в ту же папку.В итоге вы получите примерно следующее:

        Как вы можете видеть, сейчас создается и добавляется в папку релиза множество dll и папок. Однако! В windeployqt.exe отсутствуют несколько файлов, которые необходимо вручную скопировать из C:\Qt\5.9.1\mingw53_32\bin в папку выпуска. Опять же, это предполагает, что вы установили свой Qt в C:\Qt и у вас есть компилятор mingw (который используется по умолчанию в большинстве установок Qt). Это 3 файла:

        - libgcc_s_dw2-1.dll
        - libstdc++-6.dll
        - libwinpthread-1.dll

        На этом этапе ваше приложение должно быть способно выполняться отдельно от Qt. Вы можете попробовать закрыть Qt Creator и дважды щелкнуть DumbApp.exe в папке выпуска. Вы должны увидеть, как он работает, показывая пустое окно без Qt Creator! Если нет, то чего-то еще не хватает. Вам нужно поспрашивать (особенно если вы не используете Qt5.9), для каких дополнительных файлов вам может потребоваться скопировать вручную.

        Теперь вы можете просто заархивировать всю папку релиза и отправить своим друзьям или, что более стильно, скомпилировать ваши файлы в файл Installer.exe!

        2. КОМПИЛЯЦИЯ ФАЙЛОВ ПРИЛОЖЕНИЯ В INSTALLER.EXE

        Первое, что нужно сделать, это установить Inno Setup. Поверьте мне, когда я говорю, что Inno Setup — ЭТО ПУТЬ. Раньше я колебался, потому что не хотел устанавливать другую программу для распространения приложения. Но Inno Setup — это аккуратный маленький инструмент, к тому же он абсолютно бесплатен даже для коммерческого использования!

        После установки запустите компилятор Inno Setup Compiler и, если появится диалоговое окно приветствия, выберите «Создать новый файл сценария» с помощью мастера сценариев. Если нет, то перейдите в меню и выберите File->New. Мастер запустится. Нажмите «Далее» и введите необходимые данные, такие как имя приложения, номер версии и т. д.

        Вы должны указать выходную папку, чтобы после того, как InnoSetup скомпилирует ваш сценарий, созданный мастером, результирующий файл Installer.exe был там. Также измените имя выходного базового файла компилятора на ДРУГОЕ, чем setup. Возможно, установщик.

        После еще нескольких диалогов вы можете нажать «Готово», и Inno Setup отобразит созданный вами скрипт с приглашением:

        Вы можете видеть, что данные, введенные вами в мастере, теперь находятся внутри скрипта. Потратьте время, чтобы прочитать сценарий, чтобы почувствовать его. Щелкните Нет в ответ на приглашение. Вы можете скомпилировать его сейчас, но ваше приложение все равно не сможет работать. Я скажу вам, почему.

        Это потому, что вам нужно немного изменить сценарий. Во-первых, в созданном вами сценарии в разделе [Файлы] измените следующее:

        Таким образом, он будет включать все файлы в папке выпуска и повторно использовать все папки и подпапки в ней. Обычно приложение, вероятно, будет иметь некоторые библиотеки DLL, файлы значков, руководства пользователя, файлы .ini, файлы базы данных и т. д., поэтому это изменение сценария будет обрабатывать все это.

        В этой документации описано, как определить, какие файлы следует включить в дистрибутив, и как убедиться, что приложение найдет их во время выполнения. Мы продемонстрируем процедуры развертывания приложения Plug & Paint, которое находится в каталоге примеров Qt.

        Статическая ссылка

        Если вы хотите упростить задачу, развернув всего несколько файлов, т. е. автономный исполняемый файл со связанными библиотеками DLL, специфичными для компилятора, то вам необходимо собрать все статически.

        Статическая сборка Qt

        Прежде чем мы сможем построить наше приложение, мы должны убедиться, что Qt собран статически. Для этого перейдите в командную строку и введите следующее:

        Не забудьте указать любые другие необходимые вам параметры, такие как драйверы базы данных, в качестве аргументов для configure. После завершения configure введите следующее:

        Это приведет к статической сборке Qt. Обратите внимание, что в отличие от динамической сборки, статическая сборка Qt приведет к библиотекам без номеров версий; например QtCore4.lib будет QtCore.lib. Кроме того, мы использовали nmake во всех примерах, но если вы используете MinGW, вместо этого вы должны использовать mingw32-make.

        Примечание. Если позже вам понадобится перенастроить и пересобрать Qt из того же места, убедитесь, что все следы предыдущей конфигурации удалены, войдя в каталог сборки и набрав nmake distclean перед запуском настроить еще раз.

        Связывание приложения со статической версией Qt

        После завершения сборки Qt мы можем собрать приложение Plug & Paint. Сначала мы должны перейти в каталог, содержащий приложение:

        Затем мы должны запустить qmake, чтобы создать новый make-файл для приложения, и выполнить чистую сборку, чтобы создать статически связанный исполняемый файл:

        Возможно, вы захотите создать ссылку на библиотеки выпуска, и вы можете указать это при вызове qmake. Теперь, при условии, что все скомпилировано и скомпилировано без ошибок, у нас должен быть файл plugandpaint.exe, готовый к развертыванию. Один из простых способов проверить, действительно ли приложение можно запускать автономно, — это скопировать его на компьютер, на котором не установлен Qt или какие-либо приложения Qt, и запустить его на этом компьютере.

        Помните, что если ваше приложение зависит от конкретных библиотек компилятора, они все равно должны распространяться вместе с вашим приложением. Вы можете проверить, с какими библиотеками связано ваше приложение, с помощью инструмента depends. Дополнительные сведения см. в разделе «Зависимости приложений».

        Пример Plug & Paint состоит из нескольких компонентов: самого приложения (Plug & Paint) и подключаемых модулей Basic Tools и Extra Filters. Поскольку мы не можем развертывать плагины с использованием статического связывания, подготовленное нами приложение является неполным. Он запустится, но функциональность будет отключена из-за отсутствующих плагинов. Для развертывания приложений на основе плагинов мы должны использовать подход с общей библиотекой.

        Общие библиотеки

        У нас есть две проблемы при развертывании приложения Plug & Paint с использованием подхода с общими библиотеками: среда выполнения Qt должна быть правильно перераспределена вместе с исполняемым файлом приложения, а подключаемые модули должны быть установлены в правильном месте в целевой системе, чтобы чтобы приложение могло их найти.

        Создание Qt как общей библиотеки

        Мы предполагаем, что вы уже установили Qt как разделяемую библиотеку, которая используется по умолчанию при установке Qt, в каталог C:\path\to\Qt. Дополнительные сведения о сборке Qt см. в документации по установке.

        Связывание приложения с Qt как общей библиотеки

        Убедившись, что Qt построен как общая библиотека, мы можем создать приложение Plug & Paint. Во-первых, мы должны перейти в каталог, содержащий приложение:

        Теперь запустите qmake, чтобы создать новый make-файл для приложения, и выполните чистую сборку, чтобы создать динамически связанный исполняемый файл:

        При этом создается основное приложение, следующие подключаемые модули:

        Если все скомпилировано и слинковано без ошибок, мы получим исполняемый файл plugandpaint.exe, а также pnp_basictools.dll и pnp_extrafilters.dll файлы плагинов.

        Создание пакета приложения

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

        Помните, что если ваше приложение зависит от конкретных библиотек компилятора, они должны распространяться вместе с вашим приложением. Вы можете проверить, с какими библиотеками связано ваше приложение, с помощью инструмента depends. Дополнительные сведения см. в разделе «Зависимости приложений».

        Мы вскоре рассмотрим подключаемые модули, но сначала проверим, будет ли приложение работать в развернутой среде: либо скопируйте исполняемый файл и библиотеки Qt DLL на компьютер, на котором не установлен Qt или какие-либо приложения Qt, или, если вы хотите протестировать на машине сборки, убедитесь, что на машине нет Qt в ее среде.

        Если приложение запускается без проблем, значит, мы успешно создали динамически подключаемую версию приложения Plug & Paint. Но функциональность приложения по-прежнему будет отсутствовать, поскольку мы еще не развернули соответствующие подключаемые модули.

        Плагины работают иначе, чем обычные библиотеки DLL, поэтому мы не можем просто скопировать их в тот же каталог, что и исполняемый файл нашего приложения, как мы делали с библиотеками Qt DLL. При поиске подключаемых модулей приложение выполняет поиск в подкаталоге plugins внутри каталога исполняемого файла приложения.

        Поэтому, чтобы сделать плагины доступными для нашего приложения, мы должны создать подкаталог plugins и скопировать соответствующие библиотеки DLL:

        Архив, содержащий все DLL-библиотеки Qt и подключаемые модули для конкретных приложений, необходимые для запуска приложения Plug & Paint, должен включать следующие файлы:

        Кроме того, архив должен содержать следующие специфичные для компилятора библиотеки в зависимости от вашей версии Visual Studio:

        КомпонентИмя файла
        Исполняемый файлplugandpaint.exe
        Плагин Basic Toolsplugins\pnp_basictools.dll
        Подключаемый модуль ExtraFiltersplugins\pnp_extrafilters.dll
        Модуль Qt Coreqtcore4.dll
        Модуль Qt GUIqtgui4.dll

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

        Альтернативой размещению подключаемых модулей в подкаталоге подключаемых модулей является добавление пользовательского пути поиска при запуске приложения с помощью QApplication::addLibraryPath() или QApplication::setLibraryPaths().

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

        Часто удобнее всего добавить путь в функцию приложения main() сразу после создания объекта QApplication. После добавления пути приложение будет искать в нем плагины, а также искать в подкаталоге plugins в собственном каталоге приложения. Можно добавить любое количество дополнительных путей.

        Visual Studio 2005 и более поздних версий

        При развертывании приложения, скомпилированного с помощью Visual Studio 2005 и более поздних версий, необходимо выполнить некоторые дополнительные действия.

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

        Файл манифеста необходимо скопировать в ту же папку, что и исполняемый файл приложения. Вам не нужно копировать файлы манифеста для общих библиотек (DLL), так как они не используются.

        Если общая библиотека имеет зависимости, отличные от зависимостей использующего ее приложения, файл манифеста необходимо внедрить в двоичный файл DLL. Начиная с Qt 4.1.3, для встраивания манифестов доступны следующие параметры CONFIG:

        Чтобы использовать параметры, добавьте

        в ваш файл .pro. Параметр embed_manifest_dll включен по умолчанию. Параметр embed_manifest_exe НЕ включен по умолчанию.

        Дополнительную информацию о файлах манифестов и параллельных сборках можно найти на веб-сайте MSDN.

        Правильный способ включения библиотек времени выполнения в ваше приложение – убедиться, что они установлены в системе конечного пользователя.

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

        Например, в 32-разрядной системе на базе архитектуры x86 следует включить исполняемый файл vcredist_x86.exe. Исполняемые файлы vcredist_IA64.exe и vcredist_x64.exe содержат соответствующие библиотеки для архитектур IA64 и 64-разрядной архитектуры x86 соответственно.

        Примечание. Приложение, которое вы отправляете, должно быть скомпилировано с использованием точно такой же версии компилятора и той же версии среды выполнения C. Это предотвращает ошибки развертывания, вызванные разными версиями библиотек времени выполнения C.

        Visual Studio 2008 и установка вручную

        Помимо приведенных выше подробностей для VS 2005 и более поздних версий, приложения Visual Studio 2008 могут иметь проблемы при развертывании вручную, например, на USB-накопитель.

        Рекомендуемая процедура – настроить Qt с параметром -plugin-manifests с помощью инструмента 'configure'. Затем следуйте инструкциям по развертыванию частных сборок вручную.

        Коротко о шагах

        1. создайте структуру папок на компьютере разработчика, которая будет соответствовать структуре каталогов целевого USB-накопителя, например, «\app», а для ваших DLL — «\app\lib».
        2. на компьютере разработчика из соответствующей папки 'redist' скопируйте файлы Microsoft.VC80.CRT и Microsoft.VC80.MFC в каталоги '\app' и '\app\lib' на компьютере разработчика.
        3. xcopy папку \app на целевой USB-накопитель.

        Теперь ваше приложение должно запуститься. Также имейте в виду, что даже с установленным пакетом обновлений связанные библиотеки Windows будут использоваться по умолчанию. См. информацию о том, как выбрать соответствующие целевые библиотеки DLL.

        Зависимости приложений

        Дополнительные библиотеки

        В зависимости от конфигурации, определенные библиотеки компилятора должны распространяться вместе с вашим приложением. Вы можете проверить, с какими библиотеками связывается ваше приложение, с помощью инструмента Dependency Walker. Все, что вам нужно сделать, это запустить его следующим образом:

        Это предоставит список библиотек, от которых зависит ваше приложение, и другую информацию.

        При просмотре версии сборки исполняемого файла Plug & Paint (plugandpaint.exe) с помощью инструмента depends инструмент перечисляет следующие непосредственные зависимости от несистемных библиотеки:

        • QTCORE4.DLL — среда выполнения QtCore
        • QTGUI4.DLL — среда выполнения QtGui
        • MSVCRT.DLL — среда выполнения C
        • MSVCP60.DLL — среда выполнения C++ (только если установлена ​​STL)
        • MSVCR71.DLL — среда выполнения C
        • MSVCP71.DLL — среда выполнения C++ (только если установлена ​​STL)
        • MSVCR80.DLL — среда выполнения C
        • MSVCP80.DLL — среда выполнения C++ (только если установлена ​​STL)
        • MINGWM10.DLL — среда выполнения MinGW
        • LIBGCC_S_DW2-1.DLL

        При просмотре библиотек DLL плагинов перечислены точно такие же зависимости.

        Подключаемые модули Qt

        Ваше приложение также может зависеть от одного или нескольких подключаемых модулей Qt, таких как подключаемый модуль формата изображения JPEG или подключаемый модуль драйвера SQL. Обязательно распространяйте все подключаемые модули Qt, которые вам нужны, вместе с вашим приложением, и обратите внимание, что каждый тип подключаемых модулей должен находиться в определенном подкаталоге (например, imageformats или sqldrivers) в ваш каталог распространения, как описано ниже.

        Примечание. Если вы развертываете приложение, использующее QtWebKit для отображения HTML-страниц из всемирной паутины, вам следует включить все подключаемые модули текстовых кодеков, чтобы поддерживать как можно больше кодировок HTML.

        Путь поиска подключаемых модулей Qt жестко запрограммирован в библиотеке QtCore. По умолчанию подкаталог plugins установки Qt является первым путем поиска плагинов. Однако предопределенные пути, такие как путь по умолчанию, имеют определенные недостатки. Например, они могут не существовать на целевой машине. По этой причине вам необходимо изучить различные альтернативы, чтобы убедиться, что подключаемые модули Qt найдены:

          . Этот подход рекомендуется, если у вас есть исполняемые файлы в разных местах, использующие одни и те же подключаемые модули.
        • Использование QApplication::addLibraryPath() или QApplication::setLibraryPaths(). Этот подход рекомендуется, если у вас есть только один исполняемый файл, который будет использовать подключаемый модуль.
        • Использование сторонней утилиты установки для изменения жестко заданных путей в библиотеке QtCore.

        Если вы добавите собственный путь с помощью QApplication::addLibraryPath, он может выглядеть следующим образом:

        Тогда qApp->libraryPaths() вернет что-то вроде этого:

        "C:/customPath/plugins" "C:/Qt/4.8.5/plugins" "E:/myApplication/directory/"

        Исполняемый файл будет искать плагины в этих каталогах и в том же порядке, что и QStringList, возвращаемый qApp->libraryPaths(). Недавно добавленный путь добавляется к qApp->libraryPaths(), что означает, что он будет просматриваться первым. Однако, если вы используете qApp->setLibraryPaths(), вы сможете определить, какие пути и в каком порядке будут искаться.

        Документ How to Create Qt Plugins описывает вопросы, на которые следует обратить внимание при создании и развертывании плагинов для приложений Qt.

        Связанные сторонние ресурсы

          охватывает процесс кросс-компиляции приложений Windows в Linux. предоставляет еще одно руководство по кросс-компиляции Linux-Windows.

        Документация, представленная в данном документе, лицензирована в соответствии с условиями лицензии GNU Free Documentation License версии 1.3, опубликованной Free Software Foundation.

        Digia, Qt и соответствующие логотипы являются товарными знаками Digia Plc в Финляндии и/или других странах мира. Все другие торговые марки являются собственностью их владельцев. Политика конфиденциальности

        Читайте также:

        VC++ 6.0VC++ 7.1 (2003)VC++ 8.0 (2005)VC++ 9.0 (2008 г.)
        Среда выполнения Cmsvcrt.dllmsvcr71.dllmsvcr80.dllmsvcr90.dll
        Среда выполнения C++msvcp60.dll msvcp71.dllmsvcp80.dllmsvcp90.dll