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

У меня есть приложение, которое отображает множество изображений различных форматов файлов, таких как svg, png и jpeg. Мое приложение работает нормально, когда я запускаю его в своей среде сборки, но когда я развертываю его на целевом ПК, загружаются только изображения svg и png, а остальные получают изображение QML: неподдерживаемый формат изображения.

Объекты изображения находятся на форме

      Image {
    id: jpgimage
    source: images/jpgimage.jpg
}
Image {
    id: pngimage
    source: images/pngimage.png
}
Image {
    id: svgimage
    source: images/svgimage.svg
}

Я развертываю свое приложение с помощью этой команды:

      windeployqt --dir <my target folder> --qmldir <path the my project qml folder> <path to my executable>.exe --compiler-runtime

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

В моей целевой папке теперь есть следующие файлы и папки:

      my_app.log                    Qt5Widgets.dll*            libharfbuzz-0.dll*
Qt/                           Qt5WinExtras.dll*          libiconv-2.dll*
Qt5Core.dll*                  QtGraphicalEffects/        libicudt68.dll*
Qt5Gui.dll*                   QtMultimedia/              libicuin68.dll*
Qt5Multimedia.dll*            QtQml/                     libicuuc68.dll*
Qt5MultimediaQuick.dll*       QtQuick/                   libintl-8.dll*
Qt5Network.dll*               QtQuick.2/                 libpcre-1.dll*
Qt5Qml.dll*                   QtQuick3D/                 libpcre2-16-0.dll*
Qt5QmlModels.dll*             QtTest/                    libpng16-16.dll*
Qt5QmlWorkerScript.dll*       QtWinExtras/               libstdc++-6.dll*
Qt5Quick.dll*                 my_app.exe*                libwinpthread-1.dll*
Qt5Quick3D.dll*               audio/                     libzstd.dll*
Qt5Quick3DAssetImport.dll*    bearer/                    mediaservice/
Qt5Quick3DRender.dll*         iconengines/               platforminputcontexts/
Qt5Quick3DRuntimeRender.dll*  imageformats/              platforms/
Qt5Quick3DUtils.dll*          libbrotlicommon.dll*       playlistformats/
Qt5QuickControls2.dll*        libbrotlidec.dll*          qmltooling/
Qt5QuickShapes.dll*           libbz2-1.dll*              styles/
Qt5QuickTemplates2.dll*       libdouble-conversion.dll*  translations/
Qt5QuickTest.dll*             libfreetype-6.dll*         virtualkeyboard/
Qt5RemoteObjects.dll*         libgcc_s_seh-1.dll*        zlib1.dll*
Qt5Svg.dll*                   libglib-2.0-0.dll*
Qt5Test.dll*                  libgraphite2.dll*

И моя папка imageformats содержит

      qgif.dll*   qico.dll*  qjpeg.dll*  qtga.dll*   qwbmp.dll*
qicns.dll*  qjp2.dll*  qsvg.dll*   qtiff.dll*  qwebp.dll*

Он работает на ПК с Windows10, а также на Windows10 с использованием mingw64 и библиотеки qt, установленной там через msys2, а также используется исполняемый файл windeployqt из mingw64.

Целевой компьютер недавно установлен и не имеет заданных переменных среды, приложение запускается, и отображаются изображения svg и png, но не изображения jpg.

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

*edit: Я также попытался добавить вывод отладки, печатающий пути к библиотеке:

      qDebug() << "QCoreApplication::libraryPaths(): " << QCoreApplication::libraryPaths();

Это напечатало мой путь к целевой папке (тот, который выше, содержащий мое приложение и все библиотеки).

1 ответ

windeployq не перемещает все необходимые библиотеки времени выполнения, и мне не хватало двух файлов .dll для устранения всех проблем с библиотекой imageformats:

      libdeflate.dll
libjpeg-8.dll

Первый был для tiff, второй - для jpeg и нескольких других вариантов.

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

Другие вопросы по тегам