Qt

О возможной несовместимости Qt и Windows


Версия 1.00 от 01 апреля 2017 г.

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

platforms\qwindows.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
Qt5Xml.dll

и т.п. (файл qwindows.dll находится в каталоге platforms), запускаете свою программу, а она отказывает выполняться, выполняя сообщение вроде (рис. 1).

Ошибка выполнения программы Qt

Рис. 1. Ошибка выполнения программы Qt.

Причина – конфликт драйвера qwindows.dll с текущей версией Windows. Просто заменить его не получится, нужно менять практически все (или большинство) файлов поддержки. Т.е. брать библиотечные файлы Qt из другой его версии, обычно более низкой.

Например, если инсталлировать Qt-5.8.0 на Windows Server 2012 R2 и написать там любую программу (допустим, просто скомпилировав некоторый файл примера), то заставить выполнить его на Windows Server 2008 R2 вряд ли получится, даже со всеми необходимыми файлами. Однако если взять файлы поддержки из предыдущей версии Qt-5.7.1, то наша ранее скомпилированная программа запуститься с ними без проблем.

Такая же ситуация возникнет и при попытке инсталляции Qt-5.8.0 на Windows Server 2008 R2. После установки инсталлятор предложит запустить QtCreator. Если мы согласимся, то нас ждет разочарование, драйвер qwindows.dll будет конфликтовать с текущей версией Windows. То же самое будет и при попытке инсталлировать QtCreator независимо от Qt. Выход один – снижать версию Qt. Хотя странно, в статье «Supported Platforms and Configurations» перечислены все поддерживаемые версии Windows (от 7-й до 10-й) для Qt-5.8. Но, по-видимому, 32-х разрядная Windows Server 2008 R2 с ними не совместима, хотя это не ограничивает 64-х разрядную Windows Server 2012 R2.

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

zarion.webservis.ru