Как запустить приложение qt windows без среды

У меня на моем ПК, все запускается без ошибок. В папку с .exe я положил все нужные библиотеки. Но на другом ПК пишет, что Qt плагин не найден. Подскажите пожалуйста, что делать?

У меня на моем ПК, все запускается без ошибок. В папку с .exe я положил все нужные библиотеки. Но на другом ПК пишет, что Qt плагин не найден.
Вот скриншот:

Подскажите пожалуйста, что делать?

eanmos's user avatar

eanmos

6,6116 золотых знаков30 серебряных знаков49 бронзовых знаков

задан 8 авг 2019 в 11:32

Roman Khvalko's user avatar

Вам нужно:

  • собрать релиз
  • использовать программу windeployqt
    скрин windeployqt
    Ее нужно запустить из папки, где лежит .exe вашей программы.

ответ дан 8 авг 2019 в 11:36

gbg's user avatar

gbggbg

22.1k2 золотых знака31 серебряный знак52 бронзовых знака

4

А если сделать без специализированного ПО, то можно так:

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

Во-вторых, если своими словами, как-то так:

  1. В версии сборки ставите Release
  2. Собираете приложение
  3. Копируете Ваш .exe-файл в другое расположение
  4. Запускаете
  5. Вылазит ошибка о том, что не хватает определённой .dll-библиотеки
  6. Ищете нужную виндовым поиском по файлам и подставляете в ту папку, куда Вы скопировали .exe
  7. Если вылазит ошибка не связанная с наличием какой-либо библиотеки, копируете все библиотеки из папки с библиотеками Qt (название начинается с Q и расширение .dll) в папку с Вашим проектом, а потом удаляете лишние. Долго, но действенно
  8. Когда Ваше приложение, наконец, запустилось и все лишние библиотеки удалены, то, что осталось копируете на любой другой комп без Qt и запускаете.

ответ дан 8 авг 2019 в 11:47

V-Mor's user avatar

V-MorV-Mor

5,0971 золотой знак13 серебряных знаков30 бронзовых знаков

5

  1. Ищите в каталоге установки Qt папку pluginsplatforms
  2. Копируете из нее qwindows.dll в папку platforms, созданную в каталоге с вашим exe-шником

ответ дан 8 авг 2019 в 18:17

Andrey Sokolov's user avatar

3

I have written a program with Qt5.3.1 and run it on my development machine where it works fine. I copied all necessary .dll files into the folder where my .exe is. These are:

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll

Now I want to run that program on a machine that has no Qt installed. How do I do that? It shouldn’t be necessary for users to install an IDE just to use a program, right?

Details of the development machine where it works:

  • Windows 8
  • Qt 5.3.1

The deploying platform is:

  • Windows Vista
  • No Qt installed but all necessary .dlls are in place

Errors I get are first:

This application failed to start because it could not find or load the Qt platform plugin «windows».
Reinstalling the application may fix this problem.

Next error message is:

This application requested the Runtime to terminate in an unusual way. Please contact support.

Then the program crashes. But if I install Qt5.3.1 it works. So it has something to do with files in the c:/Qt directory

HostileFork says dont trust SE's user avatar

asked Jul 17, 2014 at 1:14

D4rth B4n3's user avatar

5

This application failed to start because it could not find or load the Qt platform plugin "windows".

For this problem, you should copy the plugin {QTSDK}/plugins/platforms/qwindows.dll to {YOUR_EXE_DIR}/platforms/qwindows.dll.

answered Jul 17, 2014 at 2:50

user3790229's user avatar

2

The short answer is you either need to do a static build, or you need to redistribute the Qt shared library DLLs. If you’re looking for a smaller file size static builds are often better, but there may be legal implications with this approach if you’re using Qt5 under a LGPL license. I’m not a lawyer, but you can read about LGPL linking rules in LGPL section 4.1.

The long answer is you should read the general Qt5 deployment guide and the Qt5 for Windows deployment guide. These go into quite a bit of detail.

answered Jul 17, 2014 at 2:37

MrEricSir's user avatar

MrEricSirMrEricSir

7,9444 gold badges29 silver badges35 bronze badges

1

A better solution is to use the Qt SDK application «windeployqt». It is used to copy all the required dlls and plugins to your application folder based on target platform. You can then run that on another computer. Here is the documentation: https://doc.qt.io/Qt-5/windows-deployment.html.

For example, if your executable was built using mingw53_32 and your executable is in «C:example_qtapp»:

QT_INSTALL_DIRminqw53_32binwindeployqt.exe c:example_qtapp

jonspaceharper's user avatar

answered Jul 13, 2018 at 18:19

JimSan's user avatar

JimSanJimSan

8959 silver badges19 bronze badges

2

I have encountered this problem as well,

In your Qt Directory, with the proper Qt version
C:QtQt5.2.15.2.1mingw48_32pluginsplatforms

copy qwindows.dll into a new folder that lives next to your executable, such that your list would be

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll
  • platforms/qwindows.dll

answered Jul 17, 2014 at 5:52

Dart's user avatar

DartDart

1031 silver badge5 bronze badges

You should place Qt DLLs along the release version of your executable. These are Qt5Core.dll, Qt5Gui.dll and possibly the ones for other modules that you have used. These dll files are in your installed Qt Directory in bin folder. You should also place LIBGCC_S_DW2-1.DLL, MINGWM10.DLL and LIBSTDC++-6.dll in case you are using MinGW.

If you are using plugins you should place their dll in a folder named plugins beside your exe. In case of using icons and images you should ship their dlls like qico.dll and qsvg.dll in a folder named imageformats.

answered Jul 17, 2014 at 3:49

Nejat's user avatar

NejatNejat

31.2k12 gold badges104 silver badges132 bronze badges

if Qt dlls are there, they it should work. My guess is that you are missing the run time libraries/dlls of your IDE. For example, if you are using Visual Studio 2010 as your IDE, then you need to install VS2010 Redistributable x86/x64 link depends on your architecture.

answered Jul 17, 2014 at 1:22

Samer's user avatar

SamerSamer

1,9133 gold badges34 silver badges53 bronze badges

You should also copy {QTSDK}/plugins to directory where you executable located. Then create qt.conf in the same place (with executable) with the following content:

[Paths]
Plugins=plugins

Thеn, run your program. I did the same on linux.

answered Oct 27, 2017 at 4:54

Kirill Mikhailov's user avatar

In your application folder hold down SHIFT key and right click from mouse.
You will see — Open command window here

  1. Click Open command window here
  2. TYPE windeployqt.exe app_name.exe —parameters and HIT ENTER

Example:

windeployqt.exe APP_NAME.EXE --release --no-translations --no-system-d3d-compiler --no-compiler-runtime --no-angle --no-opengl-sw

answered Dec 6, 2018 at 11:24

Razzak's user avatar

I have written a program with Qt5.3.1 and run it on my development machine where it works fine. I copied all necessary .dll files into the folder where my .exe is. These are:

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll

Now I want to run that program on a machine that has no Qt installed. How do I do that? It shouldn’t be necessary for users to install an IDE just to use a program, right?

Details of the development machine where it works:

  • Windows 8
  • Qt 5.3.1

The deploying platform is:

  • Windows Vista
  • No Qt installed but all necessary .dlls are in place

Errors I get are first:

This application failed to start because it could not find or load the Qt platform plugin «windows».
Reinstalling the application may fix this problem.

Next error message is:

This application requested the Runtime to terminate in an unusual way. Please contact support.

Then the program crashes. But if I install Qt5.3.1 it works. So it has something to do with files in the c:/Qt directory

HostileFork says dont trust SE's user avatar

asked Jul 17, 2014 at 1:14

D4rth B4n3's user avatar

5

This application failed to start because it could not find or load the Qt platform plugin "windows".

For this problem, you should copy the plugin {QTSDK}/plugins/platforms/qwindows.dll to {YOUR_EXE_DIR}/platforms/qwindows.dll.

answered Jul 17, 2014 at 2:50

user3790229's user avatar

2

The short answer is you either need to do a static build, or you need to redistribute the Qt shared library DLLs. If you’re looking for a smaller file size static builds are often better, but there may be legal implications with this approach if you’re using Qt5 under a LGPL license. I’m not a lawyer, but you can read about LGPL linking rules in LGPL section 4.1.

The long answer is you should read the general Qt5 deployment guide and the Qt5 for Windows deployment guide. These go into quite a bit of detail.

answered Jul 17, 2014 at 2:37

MrEricSir's user avatar

MrEricSirMrEricSir

7,9444 gold badges29 silver badges35 bronze badges

1

A better solution is to use the Qt SDK application «windeployqt». It is used to copy all the required dlls and plugins to your application folder based on target platform. You can then run that on another computer. Here is the documentation: https://doc.qt.io/Qt-5/windows-deployment.html.

For example, if your executable was built using mingw53_32 and your executable is in «C:example_qtapp»:

QT_INSTALL_DIRminqw53_32binwindeployqt.exe c:example_qtapp

jonspaceharper's user avatar

answered Jul 13, 2018 at 18:19

JimSan's user avatar

JimSanJimSan

8959 silver badges19 bronze badges

2

I have encountered this problem as well,

In your Qt Directory, with the proper Qt version
C:QtQt5.2.15.2.1mingw48_32pluginsplatforms

copy qwindows.dll into a new folder that lives next to your executable, such that your list would be

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll
  • platforms/qwindows.dll

answered Jul 17, 2014 at 5:52

Dart's user avatar

DartDart

1031 silver badge5 bronze badges

You should place Qt DLLs along the release version of your executable. These are Qt5Core.dll, Qt5Gui.dll and possibly the ones for other modules that you have used. These dll files are in your installed Qt Directory in bin folder. You should also place LIBGCC_S_DW2-1.DLL, MINGWM10.DLL and LIBSTDC++-6.dll in case you are using MinGW.

If you are using plugins you should place their dll in a folder named plugins beside your exe. In case of using icons and images you should ship their dlls like qico.dll and qsvg.dll in a folder named imageformats.

answered Jul 17, 2014 at 3:49

Nejat's user avatar

NejatNejat

31.2k12 gold badges104 silver badges132 bronze badges

if Qt dlls are there, they it should work. My guess is that you are missing the run time libraries/dlls of your IDE. For example, if you are using Visual Studio 2010 as your IDE, then you need to install VS2010 Redistributable x86/x64 link depends on your architecture.

answered Jul 17, 2014 at 1:22

Samer's user avatar

SamerSamer

1,9133 gold badges34 silver badges53 bronze badges

You should also copy {QTSDK}/plugins to directory where you executable located. Then create qt.conf in the same place (with executable) with the following content:

[Paths]
Plugins=plugins

Thеn, run your program. I did the same on linux.

answered Oct 27, 2017 at 4:54

Kirill Mikhailov's user avatar

In your application folder hold down SHIFT key and right click from mouse.
You will see — Open command window here

  1. Click Open command window here
  2. TYPE windeployqt.exe app_name.exe —parameters and HIT ENTER

Example:

windeployqt.exe APP_NAME.EXE --release --no-translations --no-system-d3d-compiler --no-compiler-runtime --no-angle --no-opengl-sw

answered Dec 6, 2018 at 11:24

Razzak's user avatar

Программа Qt, выпущенная под Windows

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

После проверки обнаруживается, что успешно скомпилированные программы на платформе Ubuntu могут работать на Ubuntu 16.04 без установленной среды разработки Qt, поэтому в этой статье обсуждается только успешная компиляция программ Qt на платформе Windows. Способ самостоятельной работы под платформой Windows.

1. Выбор режима компиляции

Если вы хотите опубликовать программу, вы должны выбрать для компиляции в IDEreleaseВместоdebug, Скомпилированный в версию выпуска по сравнению с отладочной версией, объем программы «исполняемые файлы и файлы DLL» значительно уменьшен;

Выбор режима компиляции

2. Интегрировать необходимые DLL-файлы и другие зависимые библиотеки

После компиляции для выпуска версии найдите сгенерированный каталог, из которого полезны только исполняемые файлы с расширением exe.

Скомпилируйте сгенерированный каталог

Откройте исполняемый файл напрямую, он будет подсказывать, что файл dll не может быть найден, решение заключается в следующем:

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

В cmd выполните следующую команду:

<Qt directory>  Qt5.5.1  5.5  mingw492_32  bin  windeployqt.exe <*. Exe>

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

windeployqt ищет зависимости

Иногда программа сообщит, что требуемый gcc.exe не может быть найден, просто добавьте каталог bin установленного с Qt mingw в переменные окружения системы. Затем выполните исполняемый файл для успешного запуска.

2.2 Файлы зависимостей, необходимые для ручной интеграции

Здесь мы можем использовать Process Explore для получения зависимого DLL-файла «Dependency Walker также является хорошим выбором»

Откройте procxp.exe, выберите меню -> Вид -> Вид нижней панели -> DLLs. Установите этот флажок, чтобы отобразить окно DLL.

В Qt Creater отладьте и запустите программу, которая будет выпущена. В Process Explore найдите exe-файл и выберите его. Ниже вы увидите зависимую dll.

Process Explore ищет зависимости

Process Explore ищет зависимости

Зависимость Уокер ищет зависимости

Зависимость Уокер ищет зависимости

В системном каталоге, как правило, все равно, сортируйте по пути, найдите файлы dll в каталоге Qt и в каталоге mingw и скопируйте эти dll в каталог издателя.

Взяв в качестве примера версию Qt Mingw, «каталог установки версии VS немного отличается», файл dll находится в каталоге установки Qt:

<Каталог установки Qt>  Qt5.5.1  5.5  mingw492_32  bin

Найдите все необходимые DLL-файлы и скопируйте в каталог, куда вы хотите распространить программу

Qt работает каталог

Например, эта программа требует следующих зависимостей:

Программа зависит от

3. Упакован в один исполняемый файл

Инструмент упаковки, выберите здесь Enigma Virtual Box, запустите программное обеспечение, выберите путь к исполняемому файлу опубликованной программы и путь к сгенерированному файлу, а кнопка «Добавить» в левом нижнем углу добавляет все dll-файлы, кроме только что выбранного exe-файла. Нажмите «Параметры файла» в правом нижнем углу и выберите «Включить виртуализацию файлов» и «Сжатый файл», как показано на рисунке:

Использование Enigma Virtual Box

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

4. Qt5 в основном зависит от описания библиотеки ссылок

4.1 Библиотека модулей Qt

  • Qt5Core.dll #QT основная библиотека
  • Qt5Gui.dll #QT библиотека Gui
  • Qt5Widgets.dll #QT Библиотека виджетов, программы с графическим интерфейсом в QT 5 в основном нуждаются в этой DLL
  • Qt5XXX.dll используется другими программами

4.2 Зависимая от ICU библиотека «Международный компонент для Unicode, инструмент Unicode»

  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll

4.3 Библиотека плагинов Qt «новая библиотека, путь должен быть правильным»

Согласно разным программам требуются разные подключаемые библиотеки. напримерQT_DIR/plugins/*/*.dll, Тебе следуетplatforms/*.dll , accessible/*.dllФайловая структура сохраняется и помещается в каталог, куда была скомпилирована программа, например:

plugins/platforms/qwindows.dll
plugins/accessible/qtaccessiblewidgets.dll

4.4 EGL-зависимая библиотека, предоставляет интерфейс для OpenGL, OpenGLes

  • libEGL.dll
  • libGLESv2.dll

4.5 mingw зависит от библиотек «компиляция msvc не требует этих библиотек»

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

4.6 Библиотека времени выполнения VC «Компиляция Mingw не требует этих библиотек»

  • msvcr110.dll «соответствует VS2012»
  • msvcp110.dll

5. Справочные материалы

  1. Выпуск и зависимости пакета программ Qt 5.5
  2. Необходимая библиотека времени выполнения «Q», выпущенная Qt в Windows
  3. Метод упаковки exe и зависимых dll, сгенерированных динамической ссылкой Qt
  4. Сборка и упаковка Qt 5 зависит от выпуска dll

En
Ar
Bg
De
El
Es
Fa
Fi
Fr
Hi
Hu
It
Ja
Kn
Ko
Ms
Nl
Pl
Pt
Ru
Sq
Th
Tr
Uk
Zh

Contents

  • 1 Goal
  • 2 Build a static version of Qt
    • 2.1 Using MinGW
    • 2.2 Using Microsoft Visual Studio
  • 3 Build a static application
    • 3.1 Using MinGW
    • 3.2 Using Microsoft Tools
  • 4 See also
  • 5 References

Goal

The goal of this article is to show how to build a standalone executable file of a Qt application for Microsoft Windows. This is an executable file that has no dependencies (aka does not require any dynamic linking to libraries). To create such a standalone version of a Qt application all required libraries should be embedded into the application using static linking. Please note that the size of the executable file will be larger.

Build a static version of Qt

The first step is to build a static version of Qt. The commands that should be executed depend on the desired platform MinGW (win32-g++) or Microsoft Visual Studio (win32-msvc).

Using MinGW

> configure -static -release -no-exceptions
> mingw32-make sub-src

More information on static builds with mingw can be found here

Using Microsoft Visual Studio

Make sure that Microsoft Visual Studio is installed. Start the Visual Studio 2008 Command Prompt. Otherwise you may get errors due to wrong or missing paths. Execute the following commands in the directory where Qt is installed (for example: C:6.3):

> configure -static -release -platform win32-msvc
> nmake sub-src

Please note that reconfiguring and building Qt is a time consuming procedure. The duration may vary depending on the hardware of your computer.

Build a static application

Modify the .pro file of the project by adding an option for static linking.
CONFIG+= static

Using MinGW

To build the application run consecutively qmake and mingw32-make.

> qmake Hello.pro
> mingw32-make

Using Microsoft Tools

To build the Qt project as a standalone executable file run qmake and nmake. After that you should execute mt.exe to embed a manifest inside the application to avoid error such as missing MSVCP90.dll when the application is started on other computers.

> qmake Hello.pro
> nmake release
> cd release
> mt.exe -manifest Hello.exe.manifest -outputresource:Hello.exe

Please note that the names of the manifest and the executable file depend on the name of your project.

See also

  • Building_a_static_Qt_for_Windows_using_MinGW
  • How to: Embed a Manifest Inside a C/C++ Application
  • How to build a static Qt version for Windows with gcc

References

  • Standalone Qt Application for Microsoft Windows

Расскажу, как запустить программу, написанную на C++/Qt для windows, на другом компьютере, где библиотеки Qt 5 не установлены. Вот мы, допустим, установили Qt Creator, создали приложение из одного окна с надписью «Hello World», выбрали для сборки конфигурацию «Выпуск» и нажали заветный зелёный треугольник. Через несколько секунд успешно запустится наша программа. Находим, где же программа лежит. Путь к ней будет примерно такой: D:…Projects2013-09-30_HelloWorldbuild-HelloWorld-Desktop_Qt_5_2_0_MinGW_32bit-ВыпускreleaseHelloWorld.exe. Радоваться рано. Если мы закроем Qt Creator, отправимся по этому пути и попытаемся запустить HelloWorld.exe,то получим следующую ошибку: «Запуск программы не возможен, так как на компьютере отсутствует Qt5Core.dll. Попробуйте переустановить программу.» Точно такая же ошибка возникнет на любом другом компьютере, где мы попытаемся запустить эту программу. Варианты решения:

1. Пересобрать сам Qt, чтобы собранные приложения статически линковались с библиотеками Qt 5 — долго, сложно, программа будет тяжёлая, и заморочки с лицензированием

2. Устанавливать на все компьютеры, где будем использовать программу, библиотеки Qt 5, совместимые с нашей сборкой, и прописывать путь к ним в системной переменной PATH

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

Порядок следующий:

1. Копируем программу в отдельную папку

2. Запускаем, смотрим имя файла в тексте ошибки

3. Находим этот DLL-файл в папке C:QtQt5.2.05.2.0mingw48_32bin и копируем его рядом с экзешником

4. Возвращаемся к пункту 2 и повторяем до тех пор, пока программа не запустится.

Итого у меня по минимуму получился следующий список DLL-библиотек для Qt 5.2:

  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll
  • Qt5Core.dll
  • Qt5Gui.dll
  • Qt5Widgets.dll
  • HelloWorld.exe

Всего размер папки получился 42 Мб, вроде как бы многовато для простого Hello World. Кого это не смущает — уже могут делиться своей программой. А я расскажу теперь, как сократить этот объём хотя бы до 16 Мб, не сильно сложно (для сравнения библиотеки Qt4 от известной программы для хранения паролей KeePassX весят 10 Мб). Библиотеки и программу мы будем просто сжимать бесплатным свободным упаковщиком UPX. Порядок действий:

  1. Качаем программу UPX — версию для windows
  2. Распаковываем скаченный архив
  3. Возвращаемся к нашим DLL-файлам, щёлкаем по каждому правой кнопкой, выбираем «Открыть с помощью» — upx.exe

Вот теперь папка с нашей программой весит 16 Мб, и её содержимое можно спокойно запускать на других компьютерах.

При запуске Qt приложения на компьютере без установленной QT приложение не работает, при этом нет никаких сообщений об ошибках. Чтобы приложение Qt запустилось, необходимо вместе с ним скопировать все динамические (*.dll) библиотеки, которые использовались при его создании, либо статически слинковать свою программу. В результате статической линковки получиться самодостаточный exe файл.
Надо отметить, что в результате статической линковки размеры exe-файлов существенно возрастают. Например, изначально exe-файл занимал всего 1,38 МБ и требовал различных библиотек в сумме на 43,5 МБ. После описанных процедур он увеличился до 16,1 МБ. Но уже всё, что надо, у него есть.

Видео по статической сборке Qt

Протестировано для: Qt 5.3.2, компилятор MinGW 4.8.2 32bit, Windows 7 64bit. Написано на основе qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW но без использования Windows PowerShell.

Итак, нужно сделать следующее:

1. Скачать и установить:
a) Python
б) Ruby
в) Perl
г) сборку Qt 5.3.2 for Windows 32-bit (MinGW 4.8.2, 737.4 MB) с официального сайта
д) файлы исходников (source code) Qt с официального сайта

2. Проверить, что всё работает правильно
а) запустить Qt Creator, создать новый проект, собрать его, запустить;
б) закрыть Qt Creator и попробовать запустить *.exe отдельно от среды разработки;
в) убедиться в том, что программа требует кучу дополнительных библиотек;
г) закрыть всё, подумать о том, какая сложная штука — жизнь.
Теперь можно идти дальше.

3. Открыть файл С:Qt5.3Srcqtbasemkspecswin32-g++qmake.conf
Если папка Src отсутствует, то создайте папку Src и разархивируйте в неё исходники скаченные в пункте 1.д.
На всякий случай можно сделать бэкап.
Добавить в конец файла (взято из windows-build-qt-static.ps1):

Код: Выделить всё

# Static
QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
DEFINES += QT_STATIC_BUILD
CONFIG += static
# Static

Сохранить изменения и закрыть файл от греха подальше.

4. Создать пустую папку для статической сборки (C:Qt5.3static)
В принципе, она может быть где угодно, главное чтобы была пустая.
Создать в ней файл make.bat с таким содержанием:

Код: Выделить всё

:: !!!check path!!!
set QtDir=C:Qt5.3static
set MingwDir=C:QtToolsmingw482_32
set QtSrcDir=C:Qt5.3Src
set CMAKE_INCLUDE_PATH=%MingwDir%i686-w64-mingw32include
:: Set a clean path including MinGW.
set PATH=%PATH%;%MingwDir%bin;%MingwDir%optbin
:: Force English locale to avoid weird effects of tools localization.
set LANG=en
:: Set environment variable QT_INSTALL_PREFIX. Documentation says it should be
:: used by configure as prefix but this does not seem to work. So, we will
:: also specify -prefix option in configure.
set QT_INSTALL_PREFIX=%QtDir%
:: Configure, compile and install Qt.
cmd /c "%QtSrcDir%configure.bat -static -debug-and-release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests" > log_cmd.txt
mingw32-make -k -j4 > log_make.txt
mingw32-make -k -j4 install > log_make_install.txt
pause

Проверить соответствие всех путей до папок «static», «Tools», «Src» . Это действительно важно.
Если всё правильно, сохранить и закрыть файл.

5. Открыть консоль cmd.exe и запустить make.bat
Этот процесс длится примерно час или два, в зависимости от скорости работы компьютера. Если всё завершилось через 5 минут или раньше, то что-то пошло не так.
В файлах log_cmd.txt, log_make.txt, log_make_install.txt можно почитать сообщения об ошибках.

6. Настроить Qt Creator.
Параметры -> Сборка и запуск -> Профили Qt -> Добавить
Выбрать файл С:Qt5.3staticbinqmake.exe
Название профиля: Qt (static)

Параметры -> Сборка и запуск -> Комплекты -> Добавить
Название: Static
Тип устройства: Desktop
Устройство: Локальный ПК
Sysroot: C:Qt5.3static
Компилятор: MinGW
Отладчик: Не задан
Профиль Qt: Qt (static)

Теперь в Qt Creator доступен комплект статической сборки.
Проекты -> Сборка и запуск -> добавить -> Static

7. В файле проекта (*.pro) добавить флаги

Наверное, как-то можно эти флаги убрать в параметры Qt Creator, но у меня это не получилось.

Это всё. Осталось только пересобрать свой проект с новым комплектом. Теперь можно запускать скомпилированные exe-файлы на любом компьютере под управлением Windows 7 или Windows XP. На других системах не тестировалось.

Взято тут

2 / 2 / 0

Регистрация: 29.08.2016

Сообщений: 43

1

08.11.2016, 15:24. Показов 916. Ответов 11


Добрый день.
В своем проекте использую файл ресурсов, в котором прописаны jpg файлы.
При запуске в QtCreator все хорошо работает, jpg корректно отображаются. Запускаю приложение вне QtCreator, предварительно добавил необходимые dll файлы, приложение приложение запускается, отрабатывает, но jpg не отображаются.

Jpg пр компиляции зашиваются в сам exe файл, и по идеи, ничего в каталог с релизным exe добавлять не нужно. На всякий случай добавил и сами jpg и файл ресурсов, результат отрицательный: картинки не отображаются.

Что делать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



lell3

2 / 2 / 0

Регистрация: 29.08.2016

Сообщений: 43

08.11.2016, 15:32

 [ТС]

3

Во время компиляция Qt создал qrc_resourse.cpp , в котором jpg кодированы массивом

C++ (Qt)
1
2
3
4
5
static const unsigned char qt_resource_data[] = 
{
  // E:/....Qt/..../Receive.jpg 
0x0,0x0,0x2,0x86, 0xff...
}

с использование которых и создался exe…

Кодеки не использовал.



0



Эксперт С++

1936 / 1048 / 109

Регистрация: 29.03.2010

Сообщений: 3,167

08.11.2016, 15:44

4

Файл Resourse. Запуск приложения вне среды Qt

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

и после этого запустите еще раз приложение, возможно полегчает



1



2 / 2 / 0

Регистрация: 29.08.2016

Сообщений: 43

08.11.2016, 15:49

 [ТС]

5

Полегчало)))))
Большое спасибо)



0



Эксперт С++

1936 / 1048 / 109

Регистрация: 29.03.2010

Сообщений: 3,167

08.11.2016, 15:52

6



0



Байт

Диссидент

Эксперт C

27200 / 16954 / 3748

Регистрация: 24.12.2010

Сообщений: 38,140

08.11.2016, 19:03

7

lell3, Оченно полезно в начале вашего main поставить пару строчек

C++ (Qt)
1
2
       qDebug()<<QImageWriter::supportedImageFormats();
       qDebug()<<QImageReader::supportedImageFormats();

При этом сделать это при наличии папки ImageFormats в директории экзэшника, и при ее отсутствии. Тогда многое станет на свои места… (в голове)
Но почему Qt вынес эти популярные форматы в плагины, вот что мне непонятно…



2



Эксперт С++

1936 / 1048 / 109

Регистрация: 29.03.2010

Сообщений: 3,167

08.11.2016, 19:16

8

у нас одно время была целая заготовка на старте такого плана, и изображения и базы данных и что только не выводили (если честно, уже и не помню, что именно выводили) :-))



1



Диссидент

Эксперт C

27200 / 16954 / 3748

Регистрация: 24.12.2010

Сообщений: 38,140

08.11.2016, 19:23

9

Цитата
Сообщение от Maxim Prishchepa
Посмотреть сообщение

что только не выводили

Да, у Qt есть целая куча таких информационных методов. Вот бы эту кучу собрать в одном месте, а?



0



Эксперт С++

1936 / 1048 / 109

Регистрация: 29.03.2010

Сообщений: 3,167

08.11.2016, 19:32

10

Цитата
Сообщение от Байт
Посмотреть сообщение

Вот бы эту кучу собрать в одном месте, а?

ну вот у нас такое и было, правда код уже безвозвратно утерян для меня (да и это типа ком. тайна была вроде как), в общем можно попробовать конечно навоять что-то эдакое, но мне лень



0



Байт

08.11.2016, 19:49

Не по теме:

Цитата
Сообщение от Maxim Prishchepa
Посмотреть сообщение

но мне лень

Двигатель прогресса, однако:D



0



1442 / 1323 / 131

Регистрация: 20.03.2009

Сообщений: 4,689

Записей в блоге: 11

09.11.2016, 10:31

12

Цитата
Сообщение от Байт
Посмотреть сообщение

Но почему Qt вынес эти популярные форматы в плагины, вот что мне непонятно…

Патенты. Можно подменить реализацию.



0



Как правило программы пишутся для того чтобы их впоследствии распространять. Либо в открытом доступе, либо локально (например, внутри компании).

Как сделать, чтобы пользователь мог работать с программой, написанной на Qt, на своём компьютере?

Подготовку программы на Qt к распространению можно условно разделить на два этапа:

  1. Компиляция программы в «релиз»;

  2. Комплектация программы необходимыми библиотеками.

Рассмотрим оба этапа применительно к Qt 5.7 с компилятором MinGW для операционной системы Windows.

Компиляция программы в «релиз»

Существуют два основных варианта компиляции приложения:

  • Отладка;

  • Выпуск («релиз»).

Отладочный вариант используется только на этапе разработки и не предназначен для распространения. Кроме того, при комплектации библиотеками для отладочного варианта последние должны иметь суффикс «d» в названии.

Поэтому программу перед распространением необходимо скомпилировать в варианте «Выпуск» («релиз»).

Выбрать нужный вариант компиляции можно непосредственно в рабочем окне QtCreator как показано на скриншоте.

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

Комплектация библиотеками

После компиляции программы её следует обязательно укомплектовать необходимыми библиотеками.

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

Конкретный перечень необходимых библиотек зависит от проекта. Ниже приведён список самых основных из них (которые требуются для запуска любого Qt приложения).

Библиотеки собственно Qt:

  • Qt5Core.dll;

  • Qt5Gui.dll;

  • Qt5Widgets.dll.

Их, а также другие библиотеки Qt можно найти в папке: папка_установки_QtToolsmingw530_32bin

Служебные библиотеки компилятора:

  • libgcc_s_dw2-1.dll;

  • libstdc++-6.dll;

  • libwinpthread-1.dll.

Их можно найти в папке: папка_установки_Qt5.7mingw53_32bin

Для того чтобы укомплектовать своё приложение необходимыми библиотеками достаточно просто скопировать их в папку с исполняемым файлом.

После этого программа будет готова к распространению и можно приступать к созданию инсталлятора или просто упаковать приложение вместе со всеми библиотеками, например, в zip архив.

Обратите внимание!

Библиотеки для приложения следует копировать именно из папок mingw, а не QtCreator. В последнем случае программа будет укомплектована библиотеками, которые предназначены только для QtCreator и, как следствие, может в итоге оказаться неработоспособной.

Понравилась статья? Поделить с друзьями:
  • Как запустить мадагаскар на windows 10
  • Как запустить любое приложение android в windows 11
  • Как запустить лост планет без windows live
  • Как запустить локальную политику безопасности windows 10 home
  • Как запустить локальную подсистему печати в windows 10