Развертывание приложений Qt в MS Windows

Материал из Wiki.crossplatform.ru

(Различия между версиями)
Перейти к: навигация, поиск
(Введение)
(в работе)
Строка 1: Строка 1:
== Введение ==
== Введение ==
-
Как указано в Асистенте, библиотека Qt не является системной. Т.е. она не распространяется штатно с ОС MS Windows. Следовательно при распространении программ, написаных на [[Qt]] для ОС MS Windows необходимо вместе с вашей программой распространять и библиотеки (dll'ки) самой Qt., может возникнуть проблема, например, с использованием плагинов. Причиной тому является факт жестко зашитых в dll'ки путей к компонентам Qt, например, к плагинам. Этот путь всегда выглядит так: {{cmd|%QTDIR%/Plugins/}}, где %QTDIR% - каталог, в которой собрана версия библиотеки Qt использовавшая при сборке приложения. Следовательно, при запуске приложения, Qt ядро вашей программы (QtCore.dll) будет пытатся найти плагины Qt в каталоге {{cmd|%QTDIR%/Plugins/}}. Вероятнее всего на компьютере пользователя такого каталога нет. Существует несколько способов обойти эту проблему. Далее описаны эти способы.
+
Как указано в Асистенте, библиотека Qt не является системной. Т.е. она не распространяется штатно с ОС MS Windows. Следовательно при распространении программ, написаных на [[Qt]] для ОС MS Windows необходимо вместе с вашей программой распространять и библиотеки (dll'ки) самой Qt.
 +
__TOC__
 +
 
 +
== Общее описание ==
 +
При распространении потребуются следующие dll'ки:
 +
* dll'ки компилятора (для MinGW32 - mingwm10.dll);
 +
* dll'ки Qt из катлога {{cmd|%QTDIR%/bin/}};
 +
* dll'ки плагинов Qt из катлога {{cmd|%QTDIR%/Plugins/}}
 +
 
 +
=== dll'ки Qt ===
 +
Из катлога {{cmd|%QTDIR%/bin/}} необходимо взять dll'ки тех модулей которые вы используете. По умолчанию используются модули QtCore и QtGui.
 +
 
 +
, может возникнуть проблема, например, с использованием плагинов. Причиной тому является факт жестко зашитых в dll'ки путей к компонентам Qt, например, к плагинам. Этот путь всегда выглядит так: {{cmd|%QTDIR%/Plugins/}}, где %QTDIR% - каталог, в которой собрана версия библиотеки Qt использовавшая при сборке приложения. Следовательно, при запуске приложения, Qt ядро вашей программы (QtCore.dll) будет пытатся найти плагины Qt в каталоге {{cmd|%QTDIR%/Plugins/}}. Вероятнее всего на компьютере пользователя такого каталога нет. Существует несколько способов обойти эту проблему. Далее описаны эти способы.
== Указание путей в самой программе ==
== Указание путей в самой программе ==

Версия 04:41, 1 июня 2009

Введение

Как указано в Асистенте, библиотека Qt не является системной. Т.е. она не распространяется штатно с ОС MS Windows. Следовательно при распространении программ, написаных на Qt для ОС MS Windows необходимо вместе с вашей программой распространять и библиотеки (dll'ки) самой Qt.

Содержание


Общее описание

При распространении потребуются следующие dll'ки:

  • dll'ки компилятора (для MinGW32 - mingwm10.dll);
  • dll'ки Qt из катлога %QTDIR%/bin/;
  • dll'ки плагинов Qt из катлога %QTDIR%/Plugins/

dll'ки Qt

Из катлога %QTDIR%/bin/ необходимо взять dll'ки тех модулей которые вы используете. По умолчанию используются модули QtCore и QtGui.

, может возникнуть проблема, например, с использованием плагинов. Причиной тому является факт жестко зашитых в dll'ки путей к компонентам Qt, например, к плагинам. Этот путь всегда выглядит так: %QTDIR%/Plugins/, где %QTDIR% - каталог, в которой собрана версия библиотеки Qt использовавшая при сборке приложения. Следовательно, при запуске приложения, Qt ядро вашей программы (QtCore.dll) будет пытатся найти плагины Qt в каталоге %QTDIR%/Plugins/. Вероятнее всего на компьютере пользователя такого каталога нет. Существует несколько способов обойти эту проблему. Далее описаны эти способы.

Указание путей в самой программе

В каталоге, куда устанавливается ваша программа, можно создать такой подкаталог
%PATH_TO_APP%/QtPlugins/,
где %PATH_TO_APP% - путь к каталогу приложения.

В этот каталог необходимо скопировать из каталога %QTDIR%/Plugins/ все содержимое или только то, что вам действительно нужно.
Замечание: обязательно, сохраните структуру (иерархию) вложеных каталогов!

Затем вам нужно добавить несколько строк кода в ваше приложение. Функция main() должна выглядеть так:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    ...
    // изменим каталог плагинов (добавим каталог установки программы)
    QStringList list_path;	// Список путей
 
    QDir dir = QDir(app.applicationDirPath()+"/QtPlugins/");	//Наш каталог %PATH_TO_APP%/QtPlugins/
    list_path << dir.absolutePath () << app.libraryPaths ();	//добавим в список и наши и стандартные пути
    app.setLibraryPaths( list_path  );				//Установим новый список путей поиска для приложения
    ...
}

Использование файла qt.config

(предстоит написать)


См. также