App based on Qt5.0.2-OpenGL crashes on start on Win XP



  • I'm using Qt5.0.2 for Windows 32-bit (VS 2010, OpenGL) on a Win7 64bit.

    My app requires the network module in addition to standard libs. Here are the dlls deployed with the app:

    1. Qt5Network.dll, Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll
    2. icudt49.dll, icuin49.dll,icuuc49
    3. msvcp100.dll, msvcr100.dll
    4. platforms\qminimal.dll, platforms\qwindows.dll

    The app runs fine on Win 7 and up. However, on some Windows XP machines it crashes on start, in which case Windows asks to submit report with qt5gui.dll as the problematic file. I have no control over those machines so I cannot provide more details, other then those from windows crash report for the release version.

    As far as I understand, if one needs to use QtQuick2 he can either use Qt5-ANGLE or use Qt5-OpenGL and hopes that end users will update the drivers manually to support OpenGL v2. However, if QtQuick2 is not used, does Qt5 still require some version of OpenGL? Are Qt5Gui.dll and Qt5Widgets.dll based on OpenGL? I assume that on some Windows XP machines there are no OpenGL v1 graphical drivers - which can be the cause of the crash.

    Finally, if QtQuick2 is not used, isn't better to use ANGLE to better target Windows XP?

    Any input is greatly appreciated!


  • Moderators

    To be honest, the choice between Angle and OpenGL is a weird thing for me: if you have a machine that does not have a GPU, neither will work. But all PCs produced after like 2000 do have some sort of graphics acceleration. And every GPU vendor provides both DirectX and OpenGL drivers... so it's hard to imagine PCs alive today that don't have OpenGL >= 2.0.

    Back to your question: QtGui requires OpenGL for linking, I don't know if it's needed at runtime or if it can be turned off with a configuration switch. Try on a virtual machine without GPU emulation (like VirtualBox for example).



  • [quote author="sierdzio" date="1370588336"]To be honest, the choice between Angle and OpenGL is a weird thing for me: if you have a machine that does not have a GPU, neither will work. But all PCs produced after like 2000 do have some sort of graphics acceleration.
    [/quote]
    The bad thing in such case (even though rare) is that the user will not be warned on anything, the app will just crash at start. Sometimes small number of users can make a big bad reference.
    [quote author="sierdzio" date="1370588336"]And every GPU vendor provides both DirectX and OpenGL drivers... so it's hard to imagine PCs alive today that don't have OpenGL >= 2.0.
    [/quote]
    There is still limited OpenGL support in some Intel GPUs. And even if the GPU supports OpenGL => 2.0 the user will need to manually install those drivers because by default Windows uses it's own drivers. In this case, if the app is not based on ANGLE users will experience crash at start with no notification of missing drivers. They may think the app is an amateur experiment - no matter how good it is. In this situation Qt-ANGLE should be preferred over Qt-OpenGL, or am I missing something? Maybe ANGLE is also risky because there may be a case where the user has an old version of DirectX?

    Is there a Qt way to detect graphical drivers issues on app startup?

    [quote author="sierdzio" date="1370588336"]
    Back to your question: QtGui requires OpenGL for linking, I don't know if it's needed at runtime or if it can be turned off with a configuration switch. Try on a virtual machine without GPU emulation (like VirtualBox for example).[/quote]

    To other forum users: Has anyone succeed in deploying Qt5 based app with no opengl requirement?



  • It might have nothing to do with opengl. Qt5Gui.dll in that package is compiled for Pentium4 (with the SSE/SSE2 instruction sets) and a lot of computers running XP might still be Athlons without SSE2 (but with SSE)...


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.