Deployed program fails to load JPEG
-
WinDbg has also a mode to catch the debug output afaik.
As you see there are no plugins loaded. Is you jpeg plugin really in F:\cutexg music\imageformats ?
-
@Christian-Ehrlicher
Yes they are, that's why I'm so confused. More output listed below, but still no image plugins loaded.I've also added
config += release
to make sure it uses release version plugins.Here is my deploy folder structure:( sorry images are uploaded to imgur, please click link to see)
Inside /imageformats are plugins copied by windeployqt and are release version:
And by "doesn't load" I mean something like this:
Running from Qt Creator:
There is another phenomenon that might help, as is mentioned in the main post:
I kept a former version exe under the same deploy folder, which had no problem loading jpeg. I moved the qjpeg.dll out of the /imageformats folder, run it and saw the same null pixmap. Then I move the dll back, but this former one still can't load jpeg.
@Bonnie
Thanks for the hint, now it's creating more output:************* Path validation summary ************** Response Time (ms) Location Deferred srv* Symbol search path is: srv* Executable search path is: ModLoad: 00007ff6`90ba0000 00007ff6`90c00000 F:\cutexg music\QXGMusic_win10.exe ModLoad: 00007fff`00f10000 00007fff`01105000 C:\WINDOWS\SYSTEM32\ntdll.dll ModLoad: 00007ffe`ff8c0000 00007ffe`ff97d000 C:\WINDOWS\System32\KERNEL32.DLL ModLoad: 00007ffe`fe650000 00007ffe`fe917000 C:\WINDOWS\System32\KERNELBASE.dll ModLoad: 00007fff`00da0000 00007fff`00ec9000 C:\WINDOWS\System32\ole32.dll ModLoad: 00007ffe`fea90000 00007ffe`feb90000 C:\WINDOWS\System32\ucrtbase.dll ModLoad: 00007fff`00c10000 00007fff`00d34000 C:\WINDOWS\System32\RPCRT4.dll ModLoad: 00007ffe`ffb30000 00007ffe`ffe85000 C:\WINDOWS\System32\combase.dll ModLoad: 00007fff`00a70000 00007fff`00a9a000 C:\WINDOWS\System32\GDI32.dll ModLoad: 00007ffe`fef40000 00007ffe`fef62000 C:\WINDOWS\System32\win32u.dll ModLoad: 00007ffe`fe980000 00007ffe`fea89000 C:\WINDOWS\System32\gdi32full.dll ModLoad: 00007ffe`febe0000 00007ffe`fec7d000 C:\WINDOWS\System32\msvcp_win.dll ModLoad: 00007ffe`ff980000 00007ffe`ffb20000 C:\WINDOWS\System32\USER32.dll ModLoad: 00007ffe`c84a0000 00007ffe`c8b76000 F:\cutexg music\Qt5Gui.dll ModLoad: 00007ffe`ce4d0000 00007ffe`cea17000 F:\cutexg music\Qt5Widgets.dll ModLoad: 00007ffe`ef2a0000 00007ffe`ef331000 C:\WINDOWS\SYSTEM32\MSVCP140.dll ModLoad: 00007ffe`c7ed0000 00007ffe`c8493000 F:\cutexg music\Qt5Core.dll ModLoad: 00007ffe`c9750000 00007ffe`c985a000 C:\WINDOWS\SYSTEM32\MFReadWrite.dll ModLoad: 00007fff`00710000 00007fff`007ae000 C:\WINDOWS\System32\msvcrt.dll ModLoad: 00007ffe`fffc0000 00007fff`00701000 C:\WINDOWS\System32\SHELL32.dll ModLoad: 00007ffe`d1a10000 00007ffe`d1bcb000 C:\WINDOWS\SYSTEM32\MFPlat.DLL ModLoad: 00007ffe`efb40000 00007ffe`efb59000 C:\WINDOWS\SYSTEM32\VCRUNTIME140.dll ModLoad: 00007ffe`fef70000 00007ffe`ff00b000 C:\WINDOWS\System32\sechost.dll ModLoad: 00007ffe`ce380000 00007ffe`ce4cf000 F:\cutexg music\Qt5Network.dll ModLoad: 00007ffe`fff50000 00007ffe`fffbb000 C:\WINDOWS\System32\WS2_32.dll ModLoad: 00007ffe`efb30000 00007ffe`efb3c000 C:\WINDOWS\SYSTEM32\VCRUNTIME140_1.dll ModLoad: 00007ffe`ff6f0000 00007ffe`ff79a000 C:\WINDOWS\System32\ADVAPI32.dll ModLoad: 00007ffe`fa730000 00007ffe`fa993000 C:\WINDOWS\SYSTEM32\d3d11.dll ModLoad: 00007ffe`fed60000 00007ffe`feebd000 C:\WINDOWS\System32\CRYPT32.dll ModLoad: 00007ffe`fcf90000 00007ffe`fd083000 C:\WINDOWS\SYSTEM32\dxgi.dll ModLoad: 00007ffe`fc0d0000 00007ffe`fc16f000 C:\WINDOWS\SYSTEM32\UxTheme.dll ModLoad: 00007ffe`feb90000 00007ffe`febdd000 C:\WINDOWS\System32\cfgmgr32.dll ModLoad: 00007ffe`faae0000 00007ffe`faae9000 C:\WINDOWS\SYSTEM32\MSVCP140_1.dll ModLoad: 00007ffe`fc2c0000 00007ffe`fc2ef000 C:\WINDOWS\SYSTEM32\dwmapi.dll ModLoad: 00007ffe`e4040000 00007ffe`e405d000 C:\WINDOWS\SYSTEM32\MPR.dll ModLoad: 00007ffe`fe540000 00007ffe`fe56e000 C:\WINDOWS\SYSTEM32\USERENV.dll ModLoad: 00007ffe`f90e0000 00007ffe`f90ea000 C:\WINDOWS\SYSTEM32\VERSION.dll ModLoad: 00007ffe`f02e0000 00007ffe`f02f8000 C:\WINDOWS\SYSTEM32\NETAPI32.dll ModLoad: 00007ffe`ffea0000 00007ffe`fff4e000 C:\WINDOWS\System32\shcore.dll ModLoad: 00007ffe`fdae0000 00007ffe`fdb1b000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL ModLoad: 00007ffe`fdb20000 00007ffe`fdbeb000 C:\WINDOWS\SYSTEM32\DNSAPI.dll ModLoad: 00007ffe`f2c10000 00007ffe`f2c37000 C:\WINDOWS\SYSTEM32\WINMM.dll ModLoad: 00007ffe`fdbf0000 00007ffe`fdbfc000 C:\WINDOWS\SYSTEM32\NETUTILS.DLL ModLoad: 00007ffe`eae10000 00007ffe`eae38000 C:\WINDOWS\SYSTEM32\SRVCLI.DLL ModLoad: 00007ffe`fe030000 00007ffe`fe03c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL ModLoad: 00007fff`00b00000 00007fff`00b30000 C:\WINDOWS\System32\IMM32.DLL ModLoad: 00007ffe`ffe90000 00007ffe`ffe99000 C:\WINDOWS\System32\NSI.dll ModLoad: 00007ffe`fc5b0000 00007ffe`fc5c3000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll ModLoad: 00007ffe`feec0000 00007ffe`fef3f000 C:\WINDOWS\System32\bcryptPrimitives.dll ModLoad: 00007ffe`d19a0000 00007ffe`d19d0000 C:\WINDOWS\SYSTEM32\RTWorkQ.DLL ModLoad: 00007ffe`fc7b0000 00007ffe`fcf43000 C:\WINDOWS\SYSTEM32\windows.storage.dll ModLoad: 00007ffe`fe0c0000 00007ffe`fe0ec000 C:\WINDOWS\SYSTEM32\Wldp.dll ModLoad: 00007fff`00aa0000 00007fff`00af5000 C:\WINDOWS\System32\shlwapi.dll ModLoad: 00007ffe`fe580000 00007ffe`fe5a6000 C:\WINDOWS\SYSTEM32\profapi.dll ModLoad: 00007ffe`c7d50000 00007ffe`c7ec5000 F:\cutexg music\platforms\qwindows.dll ModLoad: 00007fff`00b40000 00007fff`00c0d000 C:\WINDOWS\System32\OLEAUT32.dll ModLoad: 00007ffe`fa280000 00007ffe`fa294000 C:\WINDOWS\SYSTEM32\WTSAPI32.dll ModLoad: 00007ffe`fdc50000 00007ffe`fdc9b000 C:\WINDOWS\SYSTEM32\powrprof.dll ModLoad: 00007ffe`fdac0000 00007ffe`fdad2000 C:\WINDOWS\SYSTEM32\UMPDC.dll ModLoad: 00007ffe`de3e0000 00007ffe`de406000 F:\cutexg music\styles\qwindowsvistastyle.dll ModLoad: 00007ffe`dbe50000 00007ffe`dc0ce000 C:\WINDOWS\system32\dwrite.dll ModLoad: 00007ffe`f8930000 00007ffe`f8947000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL ModLoad: 00007ffe`f8910000 00007ffe`f892d000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL ModLoad: 00007ffe`f61f0000 00007ffe`f63bd000 C:\WINDOWS\system32\d3d9.dll ModLoad: 00007ffe`d8ba0000 00007ffe`d8c3e000 C:\WINDOWS\SYSTEM32\xaudio2_9.dll ModLoad: 00007ffe`f90f0000 00007ffe`f9175000 C:\WINDOWS\SYSTEM32\MMDevAPI.DLL ModLoad: 00007ffe`f8ea0000 00007ffe`f8eaa000 C:\WINDOWS\SYSTEM32\AVRT.dll ModLoad: 00007ffe`fe400000 00007ffe`fe42c000 C:\WINDOWS\SYSTEM32\DEVOBJ.dll ModLoad: 00007fff`007b0000 00007fff`00858000 C:\WINDOWS\System32\clbcatq.dll ModLoad: 00007ffe`f8eb0000 00007ffe`f8ee1000 C:\WINDOWS\SYSTEM32\cryptnet.dll ModLoad: 00007ffe`fe920000 00007ffe`fe980000 C:\WINDOWS\System32\WINTRUST.DLL ModLoad: 00007ffe`fe240000 00007ffe`fe252000 C:\WINDOWS\SYSTEM32\MSASN1.dll ModLoad: 00007ffe`ff510000 00007ffe`ff52d000 C:\WINDOWS\System32\imagehlp.dll ModLoad: 00007ffe`f9280000 00007ffe`f9400000 C:\WINDOWS\SYSTEM32\AUDIOSES.DLL ModLoad: 00007ffe`fc1d0000 00007ffe`fc1e4000 C:\WINDOWS\SYSTEM32\resourcepolicyclient.dll ModLoad: 00007ffe`fe010000 00007ffe`fe028000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll ModLoad: 00007ffe`fd760000 00007ffe`fd794000 C:\WINDOWS\system32\rsaenh.dll ModLoad: 00007ffe`fed30000 00007ffe`fed57000 C:\WINDOWS\System32\bcrypt.dll ModLoad: 00007ffe`ff7a0000 00007ffe`ff8b5000 C:\WINDOWS\System32\MSCTF.dll ModLoad: 00007ffe`dcae0000 00007ffe`dcb1e000 C:\WINDOWS\system32\dataexchange.dll ModLoad: 00007ffe`fb340000 00007ffe`fb525000 C:\WINDOWS\system32\dcomp.dll ModLoad: 00007ffe`f8050000 00007ffe`f8257000 C:\WINDOWS\system32\twinapi.appcore.dll ModLoad: 00007ffe`edc10000 00007ffe`edd0d000 C:\WINDOWS\SYSTEM32\textinputframework.dll ModLoad: 00007ffe`fb8b0000 00007ffe`fbc0a000 C:\WINDOWS\System32\CoreUIComponents.dll ModLoad: 00007ffe`fbc10000 00007ffe`fbd02000 C:\WINDOWS\System32\CoreMessaging.dll ModLoad: 00007ffe`fd380000 00007ffe`fd3b3000 C:\WINDOWS\SYSTEM32\ntmarta.dll ModLoad: 00007ffe`fb1e0000 00007ffe`fb336000 C:\WINDOWS\SYSTEM32\wintypes.dll ModLoad: 00007ffe`e7ab0000 00007ffe`e7b16000 C:\WINDOWS\system32\Oleacc.dll ModLoad: 00007ffe`d5840000 00007ffe`d5b34000 C:\WINDOWS\system32\UIAutomationCore.dll ModLoad: 00007ffe`f9fd0000 00007ffe`fa0c7000 C:\WINDOWS\SYSTEM32\PROPSYS.dll ModLoad: 00007ffe`fe450000 00007ffe`fe4f2000 C:\WINDOWS\SYSTEM32\sxs.dll (3558.275c): Break instruction exception - code 80000003 (first chance) ntdll!DbgBreakPoint: 00007fff`00faf8b0 cc int 3
Seems the platforms and styles plugins are loaded, but still no imageformats.
-
We need the debug output from the system where the plugins are not loaded.
-
The following lines are missing:
ModLoad: 00007ffe`eef80000 00007ffe`eef8d000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qgif.dll ModLoad: 00007ffe`e3130000 00007ffe`e313f000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qicns.dll ModLoad: 00007ffe`de440000 00007ffe`de44d000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qico.dll ModLoad: 00007ffe`d8bd0000 00007ffe`d8c3a000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qjpeg.dll ModLoad: 00007ffe`de430000 00007ffe`de43c000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qsvg.dll ModLoad: 00007ffe`de3b0000 00007ffe`de404000 F:\Qt\5.15.0\msvc2019_64\bin\Qt5Svg.dll ModLoad: 00007ffe`de370000 00007ffe`de37c000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qtga.dll ModLoad: 00007ffe`cf660000 00007ffe`cf6c3000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qtiff.dll ModLoad: 00007ffe`d8bc0000 00007ffe`d8bcb000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qwbmp.dll ModLoad: 00007ffe`cf5d0000 00007ffe`cf653000 F:\Qt\5.15.0\msvc2019_64\plugins\imageformats\qwebp.dll
Right before
qwindows.dll
.
I compared 2 outputs, other lines are the same except some loading sequence. No clue why Qt5Svg is not loaded though... -
Again: please find a way to catch the debug outputs (e.g. with qInstallMessageHandler) so we can see what QT_DEBUG_PLUGINS prints out!
-
@Christian-Ehrlicher
The message handler somehow started to log plugins debug info.Debug: QFactoryLoader::QFactoryLoader() checking directory path "F:/cutexg music/platforms" ... Debug: QFactoryLoader::QFactoryLoader() looking at "F:/cutexg music/platforms/qminimal.dll" Warning: Found metadata in lib F:/cutexg music/platforms/qminimal.dll, metadata= { "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3", "MetaData": { "Keys": [ "minimal" ] }, "archreq": 0, "className": "QMinimalIntegrationPlugin", "debug": false, "version": 331520 } Debug: Got keys from plugin meta data ("minimal") Debug: QFactoryLoader::QFactoryLoader() looking at "F:/cutexg music/platforms/qwindows.dll" Warning: Found metadata in lib F:/cutexg music/platforms/qwindows.dll, metadata= { "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3", "MetaData": { "Keys": [ "windows" ] }, "archreq": 0, "className": "QWindowsIntegrationPlugin", "debug": false, "version": 331520 } Debug: Got keys from plugin meta data ("windows") Debug: loaded library "F:/cutexg music/platforms/qwindows.dll" Debug: QFactoryLoader::QFactoryLoader() checking directory path "F:/cutexg music/platformthemes" ... Debug: QFactoryLoader::QFactoryLoader() checking directory path "F:/cutexg music/styles" ... Debug: QFactoryLoader::QFactoryLoader() looking at "F:/cutexg music/styles/qwindowsvistastyle.dll" Warning: Found metadata in lib F:/cutexg music/styles/qwindowsvistastyle.dll, metadata= { "IID": "org.qt-project.Qt.QStyleFactoryInterface", "MetaData": { "Keys": [ "windowsvista" ] }, "archreq": 0, "className": "QWindowsVistaStylePlugin", "debug": false, "version": 331520 } Debug: Got keys from plugin meta data ("windowsvista") Debug: loaded library "F:/cutexg music/styles/qwindowsvistastyle.dll" Debug: QFactoryLoader::QFactoryLoader() checking directory path "F:/cutexg music/accessible" ... Debug: QFactoryLoader::QFactoryLoader() checking directory path "F:/cutexg music/accessiblebridge" ...
Indicating it's not even looking for the imageformats.
-
Please take a look at QCoreApplication::libraryPaths(), it's the source where Qt iterates over: QFactoryLoader::update()
-
... QApplication a(argc, argv); qDebug() << QCoreApplication::libraryPaths() << Qt::endl; ...
Lists only the root folder, "F:/cutexg music".
Then I tried to add an absolute path directing to MSVC plugins folder by
QApplication::addLibraryPath("F:\\Qt\\5.15.0\\msvc2019_64\\plugins");
It lists both paths and pictures are shown. Plugins debug info also indicates the plugins from MSVC folder are loaded.
-
Ok, this does not help, did not read carefully enough.
Please check the output of QImageReader::supportedImageFormats(). Did you maybe compile Qt by your own and disabled the image format plugins (QT_NO_IMAGEFORMATPLUGIN)?/edit: im referring to https://code.woboq.org/qt5/qtbase/src/gui/image/qimagereaderwriterhelpers.cpp.html#_ZN25QImageReaderWriterHelpers21supportedImageFormatsENS_10CapabilityE - as you can see calling supportedImageFormats() should trigger the QFactoryLoader for imageformats should be called.
-
Did you maybe compile Qt by your own and disabled the image format plugins (QT_NO_IMAGEFORMATPLUGIN)?
I install Qt by maintenance tool online, so this is unlikely to happen.
/edit: im referring to https://code.woboq.org/qt5/qtbase/src/gui/image/qimagereaderwriterhelpers.cpp.html#_ZN25QImageReaderWriterHelpers21supportedImageFormatsENS_10CapabilityE - as you can see calling supportedImageFormats() should trigger the QFactoryLoader for imageformats should be called.
This is absolutely weird, so I commented
QApplication::addLibraryPath("F:\\Qt\\5.15.0\\msvc2019_64\\plugins");
out, addedinclude <QImageReader>
andQImageReader::supportedImageFormats()
in main, deployed program showed jpeg again, even after I comment all these added lines then clean&rebuild the project. The library path output is still the same, but now it looks for and loads image plugins.Now I'm really curious about what's going on, is this related to the shadow build or what?
-
Ok,what Qt version do you use and can you maybe provide a simple reproducer? I mean something like
int main(...) { QApplication app(argc, argv); QImage img("my.jpeg"); qDebug() << "Is loaded:" << !img.isNull(); }
So we can check if this small program has the same issues.
-
Ok,what Qt version do you use and can you maybe provide a simple reproducer?
I'm using Qt 5.15.0 with Qt Creator 4.13.1, compiler version is MSVC 2019 (16.7.30517.126 amd64).
I'll try to write a minimum example, but it may take some time to reproduce the situation. Thanks very much for your effort and patience!
-
Hello from 2024, I believe I had the same issue loading JPEG plugin, while other (GIF ICO) loaded correctly.
It is insufficient to have "imageformats" with the "qjpeg(d).dll" in it. You also need to have "jpeg62.dll" in your application folder, i.e. next to other basic "Qt6*.dll". The missing "jpeg62.dll" corresponds to JPEG image codec (https://libjpeg-turbo.org/) that Qt JPEG plugin depends on.
I hope that helps.