У меня на моем ПК, все запускается без ошибок. В папку с .exe я положил все нужные библиотеки. Но на другом ПК пишет, что Qt плагин не найден.
Подскажите пожалуйста, что делать?
eanmos
6,6116 золотых знаков30 серебряных знаков49 бронзовых знаков
задан 8 авг 2019 в 11:32
Вам нужно:
- собрать релиз
- использовать программу windeployqt
Ее нужно запустить из папки, где лежит .exe вашей программы.
ответ дан 8 авг 2019 в 11:36
gbggbg
22.1k2 золотых знака31 серебряный знак52 бронзовых знака
4
А если сделать без специализированного ПО, то можно так:
Во-первых вот тут есть великолепная инструкция, которой всегда пользуюсь.
Во-вторых, если своими словами, как-то так:
- В версии сборки ставите Release
- Собираете приложение
- Копируете Ваш
.exe
-файл в другое расположение - Запускаете
- Вылазит ошибка о том, что не хватает определённой
.dll
-библиотеки - Ищете нужную виндовым поиском по файлам и подставляете в ту папку, куда Вы скопировали
.exe
- Если вылазит ошибка не связанная с наличием какой-либо библиотеки, копируете все библиотеки из папки с библиотеками Qt (название начинается с
Q
и расширение.dll
) в папку с Вашим проектом, а потом удаляете лишние. Долго, но действенно - Когда Ваше приложение, наконец, запустилось и все лишние библиотеки удалены, то, что осталось копируете на любой другой комп без Qt и запускаете.
ответ дан 8 авг 2019 в 11:47
V-MorV-Mor
5,0971 золотой знак13 серебряных знаков30 бронзовых знаков
5
- Ищите в каталоге установки Qt папку pluginsplatforms
- Копируете из нее qwindows.dll в папку platforms, созданную в каталоге с вашим exe-шником
ответ дан 8 авг 2019 в 18:17
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
asked Jul 17, 2014 at 1:14
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
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
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
answered Jul 13, 2018 at 18:19
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
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
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
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
In your application folder hold down SHIFT key and right click from mouse.
You will see — Open command window here
- Click Open command window here
- 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
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
asked Jul 17, 2014 at 1:14
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
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
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
answered Jul 13, 2018 at 18:19
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
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
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
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
In your application folder hold down SHIFT key and right click from mouse.
You will see — Open command window here
- Click Open command window here
- 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
Программа 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. Справочные материалы
- Выпуск и зависимости пакета программ Qt 5.5
- Необходимая библиотека времени выполнения «Q», выпущенная Qt в Windows
- Метод упаковки exe и зависимых dll, сгенерированных динамической ссылкой Qt
- Сборка и упаковка 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. Порядок действий:
- Качаем программу UPX — версию для windows
- Распаковываем скаченный архив
- Возвращаемся к нашим 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 пр компиляции зашиваются в сам exe файл, и по идеи, ничего в каталог с релизным exe добавлять не нужно. На всякий случай добавил и сами jpg и файл ресурсов, результат отрицательный: картинки не отображаются. Что делать?
__________________
0 |
lell3 2 / 2 / 0 Регистрация: 29.08.2016 Сообщений: 43 |
||||
08.11.2016, 15:32 [ТС] |
3 |
|||
Во время компиляция Qt создал qrc_resourse.cpp , в котором jpg кодированы массивом
с использование которых и создался exe… Кодеки не использовал.
0 |
1936 / 1048 / 109 Регистрация: 29.03.2010 Сообщений: 3,167 |
|
08.11.2016, 15:44 |
4 |
Зайдите в папку с установленным Qt, и скопируйте папку, которая на скринах выделена в папку с вашим приложением, должно получиться что-то типа: и после этого запустите еще раз приложение, возможно полегчает
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 |
Байт Диссидент 27200 / 16954 / 3748 Регистрация: 24.12.2010 Сообщений: 38,140 |
||||
08.11.2016, 19:03 |
7 |
|||
lell3, Оченно полезно в начале вашего main поставить пару строчек
При этом сделать это при наличии папки ImageFormats в директории экзэшника, и при ее отсутствии. Тогда многое станет на свои места… (в голове)
2 |
1936 / 1048 / 109 Регистрация: 29.03.2010 Сообщений: 3,167 |
|
08.11.2016, 19:16 |
8 |
у нас одно время была целая заготовка на старте такого плана, и изображения и базы данных и что только не выводили (если честно, уже и не помню, что именно выводили) :-))
1 |
Диссидент 27200 / 16954 / 3748 Регистрация: 24.12.2010 Сообщений: 38,140 |
|
08.11.2016, 19:23 |
9 |
что только не выводили Да, у Qt есть целая куча таких информационных методов. Вот бы эту кучу собрать в одном месте, а?
0 |
1936 / 1048 / 109 Регистрация: 29.03.2010 Сообщений: 3,167 |
|
08.11.2016, 19:32 |
10 |
Вот бы эту кучу собрать в одном месте, а? ну вот у нас такое и было, правда код уже безвозвратно утерян для меня (да и это типа ком. тайна была вроде как), в общем можно попробовать конечно навоять что-то эдакое, но мне лень
0 |
Байт |
08.11.2016, 19:49
|
Не по теме:
но мне лень Двигатель прогресса, однако:D
0 |
1442 / 1323 / 131 Регистрация: 20.03.2009 Сообщений: 4,689 Записей в блоге: 11 |
|
09.11.2016, 10:31 |
12 |
Но почему Qt вынес эти популярные форматы в плагины, вот что мне непонятно… Патенты. Можно подменить реализацию.
0 |
Как правило программы пишутся для того чтобы их впоследствии распространять. Либо в открытом доступе, либо локально (например, внутри компании).
Как сделать, чтобы пользователь мог работать с программой, написанной на Qt, на своём компьютере?
Подготовку программы на Qt к распространению можно условно разделить на два этапа:
-
Компиляция программы в «релиз»;
-
Комплектация программы необходимыми библиотеками.
Рассмотрим оба этапа применительно к 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 и, как следствие, может в итоге оказаться неработоспособной.