Details
-
Bug
-
Resolution: Fixed
-
P3: Somewhat important
-
6.2.2
-
Windows 11, Visual Studio 2019
-
-
74163a6511 (qt/qtwebengine/dev) 9eaf5a5c9f (qt/qtwebengine/6.4.0) 9327dcb9b8 (qt/qtwebengine/6.3) 9327dcb9b8 (qt/tqtc-qtwebengine/6.3) 9eaf5a5c9f (qt/tqtc-qtwebengine/6.4.0) 74163a6511 (qt/tqtc-qtwebengine/dev) 9327dcb9b8 (qt/tqtc-qtwebengine/6.2)
Description
After migrating from Qt5 to Qt6.2.2 some of our applications fail to run on certain Windows machines (that don't have Windows Media Player installed). It seems that Qt6.2.2 now requires certain dlls that used to be delay loaded in Qt5. More specifically Qt6Multimedia.dll and Qt6WebEngineCore.dll now has fixed dependency on mf.dll.
e.g. Here is the output of
dumpbin /dependents Qt5WebEngineCore.dll
. . . USP10.dll dhcpcsvc.DLL urlmon.dll Image has the following delay load dependencies: ADVAPI32.dll ole32.dll CFGMGR32.dll POWRPROF.dll SETUPAPI.dll MF.dll MFPlat.DLL MFReadWrite.dll bthprops.cpl BluetoothApis.dll WINUSB.DLL
We were able to remove the mf.dll dependency from Qt6Multimedia.dll by using the
-no-feature-wmf
configure option but not from Qt6WebEngineCore.dll.
I don't understand how the Qt build system work but did notice that in this qtwebengine\src\3rdparty\chromium\media\base\win\BUILD.gn file there are provisions to make some of the dlls to delay loaded.
I've attached the sample output of dumpbin command for Qt5 and Qt6 webengine core dll.