Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

The QT program developed under win10 runs incorrectly on win7



  •     I compiled the application with QT creator (qt6.2+MSVC) on win10, and then put the application on win7 to run, and reported the error "The program input point createdxgifactory2 cannot be located in dxgi.dll".
    
       QT official website says that win7 does not support QT (version 6.2) development, so I developed it on win10. I once considered compiling the whole QT and QT program in MT mode, but it is not recommended to do so on QT wiki.
    
       Via depends.exe, dxgi.exe from win7 does not contain the createdxgifactory2 function, but win10 does. I put dxgi.dll from win10 into the application directory, but the problem still exists, indicating that the application is looking for dxgi.dll from win7 system path. In addition, msvcrt.dll also could not find _free_Locale function.
    
       I want to clarify the following questions:
    
       1. Whether the application compiled with QT (version 6.2) on win10 supports running on win7?
    
       2. Is there a way for applications to find these system libraries in the application directory first?
    
       3.Is there any way to solve my current problems?
    
       I look forward to your reply, thank you!


  • @bergerac said in The QT program developed under win10 runs incorrectly on win7:

    1. Whether the application compiled with QT (version 6.2) on win10 supports running on win7?

    QT official website says that win7 does not support QT (version 6.2) development, so I developed it on win10.

    Where do you claim the site says it is only development which does not support Windows 7? https://doc.qt.io/qt-6/windows.html just says

    The following Windows configurations are supported in Qt 6.2:

    Operating System Architecture Compiler

    Windows 10 (1809 or later) x86_64 MSVC 2019, MinGW 11.2

    Windows on ARM arm64 MSVC 2019 Technology Preview

    I believe that to mean you cannot target Windows 7, regardless of development platform

    3.Is there any way to solve my current problems?

    Use Qt 5.x instead of 6.x.



  • Hi, as @JonB says, officially Qt6 does not work on Windows7.

    To make it work, 2 choices:

    1. Bend Windows7 to your will.
    2. Bend Qt6 to your will.

    I can assure you that choice 1 is enormously harder than choice 2 :-)

    I had more or less the same problem as you, I wanted to use Qt 6 on Windows 7. So I downloaded the source for Qt 6.2.2, edited it and rebuilt it with MSVC 2019 to work on Windows 7. Turns out only 3 .dlls needed to change, if you want to try you can download these patched versions, for more see https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7

    The patches I made included a fix for that dreaded "missing CreateDXGIFactory2 function" error: the code in Qt5 checks if it's running on Windows 10 or later, if it's not it uses CreateDXGIFactory1 instead (which works fine on Windows 7). In Qt6 this check is removed and it assumes it always runs on Windows 10 or 11.
    In total there were say 5 similar patches needed, mostly solved by copying back the code from Qt5 into Qt6. I will probably patch the upcoming Qt 6.2.3 in the same way, but this is an uphill battle, perhaps in Qt 6.4 or 6.5 there will be some new functions that requires Windows 10, we'll see...

    Anyway, these cleanups are understandable, it reduces code bloat and runtime overhead. On the other hand, consider:
    You can install a new Firefox on Windows XP (and Windows 7).
    The new Visual Studio 2022 installs and works fine on Windows 7.
    However, Microsoft and Mozilla are bigger companies with more resources.



  •    Thanks @JonB and @hskoglund.
       @hskoglund , I followed your advice and downloaded the QT(6.2.1) installation package from the QT official website, but an error which said "Error during installation process (qt.qt6.621.win64_msvc2019_64): Running "E:\Qt\6.2.1\msvc2019_64\bin\qmake.exe" resulted in a crash." was reported on win7. Have you ever encountered this problem?Thank you again for your reply.


  • Yes, see my older post this error is to be expected since the MaintenanceTool tries to launch qmake for an unpatched 6.2.2 on your Windows 7.
    Just click "Ignore" (have to do it two times), then 6.2.2 should be installed anway. Then you can try downloading my zip and replacing Qt6Core.dll, Qt6Gui.dll and qwindows.dll...



  • @hskoglund, I replaced the three libraries according to the steps by
    https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7, and then ran QT creator ,
    but there was an error “This application failed to start because no Qt platform plugin could be initialized.
    Reinstalling the application may fix this problem.Available platforms plugins are:direct2d,minimal,offscreen,windows.”
    Have you ever encountered this error?



  • @bergerac
    While you wait for a specific solution from @hskoglund .

    Whenever you get "no Qt platform plugin could be initialized", to diagnose set environment variable QT_DEBUG_PLUGINS=1 in a shell/terminal and then run your application. You should get a stream of diagnostic output. Look right near the end for whatever the cause of your final problem is.



  • Hi @bergerac most likely you successfully replaced Qt6Core.dll and Qt6Gui.dll but not qwindows.dll.
    If you look in your C:\Qt\Tools\QtCreator\bin\plugins\platforms folder, the original qwindows.dll is from November 23, 2021 with a size of 780568 bytes.
    My patched version is from December 21. 2021 with a size of 763904 bytes.

    If you have the one from November that could explain the error "The application failed..."
    Otherwise you can try following the advice from @JonB



  • Hi @JonB @hskoglund
    I checked the qwindows.dll again and confirmed that it had been replaced.
    Then i use @JonB method to run QT creator.exe by cmd, but did not get any output report.Did I miss something?



  • To see the output you need to start DbgView



  • @hskoglund
    Ah, I'm not a Windows Qt user. So it doesn't just output to stdout/err under Windows if run from a Command prompt?



  • @JonB No that would be too easy, but DbgView to the rescue.



  • @hskoglund
    :) When I am advising people of this, do they have to download that DbgView, will it be there if they have MSVC or MinGW only?



  • Hi @hskoglund @JonB
    DbgView.exe shows the information
    "[28200] qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.
    [28200] This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    [28200] Available platform plugins are: direct2d, minimal, offscreen, windows."



  • @JonB Again, that would be too easy. One of the first things I do a new Windows PC is to download the complete SysInternals suite.



  • @bergerac Please include the text before "...[28200] qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.""



  • @bergerac
    What did you do for

    to diagnose set environment variable QT_DEBUG_PLUGINS=1 in a shell/terminal and then run your application.

    because your output looks just like it was?



  • Hi @hskoglund @JonB
    @hskoglund There was nothing else before that information.
    @JonB I open cmd, enter "set qt_debug_plugins = 1", and then locate to the installation directory to run QT Creator.exe.



  • Hi, the output should be a couple of thousand lines, the first one should be:

    1  0.00000  [28200] QFactoryLoader::QFactoryLoader() checking directory path "C:/Qt/Tools/QtCreator/bin/plugins/platforms" ...
    

    don't need all thousands of lines, just say the 40 at the end...



  • @bergerac
    There ought be preceding output.

    Try SET QT_DEBUG_PLUGINS=1, just in case capitals matter, though I suspect not under Windows, but don't know.

    locate to the installation directory to run QT Creator.exe.

    That is not what I said. I said run the executable, not Creator. It is not apparent to me the variable will necessarily be passed to the application when run from there. If you do it that way you should look inside Creator where you see the "runtime environment variables" set up. Which is why running the program directly from the Command prompt is simpler.



  • Hi @JonB @hskoglund
    I run QT creator.exe directly , and then can see the debugging information
    "[28668] QFactoryLoader::QFactoryLoader() checking directory path "E:/Qt/Tools/QtCreator/bin/platforms" ...
    [28668] Cannot load library E:\Qt\Tools\QtCreator\bin\plugins\platforms\qwindows--.dll: The specified program could not be found.
    [28668] QLibraryPrivate::loadPlugin failed on "E:/Qt/Tools/QtCreator/bin/plugins/platforms/qwindows--.dll" : "Cannot load library E:\Qt\Tools\QtCreator\bin\plugins\platforms\qwindows--.dll: The specified program could not be found."
    I renamed the old library as qwindows--.dll and put the new library in.Debugging information indicates that QT creator is still looking for old library when it runs.



  • @bergerac
    Is you problem you reported earlier when you run Creator or when you run your application?
    I think I had misunderstood, I thought it was your program, now I think it is Creator you cannot run, but it is not clear.



  • Hi @JonB
    My topic is the problem of running the developed application. Later, @hskoglund provided the modified Qt library and asked me to
    build the development environment directly on win7 and develop application with QT creator. Therefore, the error later was the running error of Creator.
    I'm sorry I didn't make it clear. Thank you again.



  • @bergerac I see. Then i must leave you in his hands for Qt6 issues.



  • Hi @bergerac sorry that it didn't work out as planned.

    I think best solution is to install on older version of Qt Creator that uses Qt5, i.e. has no problems (and requires no patching :-) to run on your Windows 7.

    A download of Qt Creator 5.0.3 you can find here (the first link).

    When you start Qt Creator 5.0.3 the first time, a yellow box will be shown: "Link with a Qt installation to automatically register..." just click Yes (and I think you have to click Yes one more time). Then you can use that version of Qt Creator the normal way.



  • Hi @hskoglund
    I will follow your advice.
    Thanks again for your help @JonB and @hskoglund


Log in to reply