我有一个应用程序,可以显示很多不同文件格式的图像,如 svg、png 和 jpeg。我的应用程序在构建环境中运行时运行良好,但是当我将其部署到目标 PC 时,只会加载 svg 和 png 图像,而其他图像会得到 QML Image: Unsupported Image Format。
图像对象在表单上
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*
这是在 Windows 10 PC 上运行的,也是在 Windows 10 上使用 mingw64 和通过 msys2 安装的 qt 库构建的,使用的 windeployqt 可执行文件也来自 mingw64。
目标 PC 是新安装的,没有设置环境变量,应用程序运行并显示 svg 和 png 图像,但不显示 jpg 图像。
在让已部署的应用程序正常工作之前,我进行了几次尝试,因此我很可能在此过程中遗漏了一些明显的东西。
*编辑:我还尝试添加打印库路径的调试输出:
qDebug() << "QCoreApplication::libraryPaths(): " << QCoreApplication::libraryPaths();
这打印了我的目标文件夹路径(上面包含我的应用程序和所有库的路径)。