Windows Embedded Compact 7 - Unable to import library Qt5Gui.dll



  • Hi, I successfully build Qt for Windows Embedded Compact 7.

    configure -platform win32-msvc2008 -xplatform wince70embedded-armv4i-msvc2008 -no-accessibility -opengl es2

    Now I created a simple application using QML.
    I copy my exe application to root folder of my device
    Also the files from (qt5gui.dll, qt5qml.dll, qt5core.dll) took from the folder (..\qt-everywhere-opensource-src-5.4.1\qtbase\bin) but I'm getting the following error "Unable to import library Qt5Gui.dll !".

    Did I miss something ?

    Also, it is normal that I'm having this on QtCreator : Screen shot

    Best regards



  • Ok those files was missing :

    \msvcr90.dll
    \msvcr90d.dll)
    \platforms\qwindows.dll
    \platforms\qwindowsd.dll
    

    Now widget application are well working. But while I start a QML application I got no error message but nothing appears.

    I have the following file present too :

    \windows\libegl.dll
    \windows\libGLES_CM.dll
    \windows\libGLESv1_CM.dll
    \windows\libGLESv2.dll
    

    Did I miss something else ?


  • Lifetime Qt Champion

    Hi,

    You can find here a nice explanation of what you need to deploy an application on Windows. For the more gory details, you can take a look a the Qt's Windows Deployment chapter



  • Hi SGaist,

    First of all, thank your for your support. It really appreciated :)

    I follow the instructions of the link you provide me but I'm not getting anything from executing my QML application demo. There nothing special in it, only a blue rectangle. While executing the exe file it returns immediately without any error.

    Here is the structure of my deployment : Folder structure

    I did tried using Dependency Walker to test agains all dependency but all seems to be good.

    Here is the configuration of my build :

    I modify the SDK name in the qmake.conf :

    CE_SDK                  = BBBWinCE7_SDK
    

    The configuration line :

    configure -platform win32-msvc2008 -xplatform wince70embedded-armv4i-msvc2008 -no-accessibility -opengl es2
    

    Run nmake and the the compilation succeed. I was not aware at this time that we can use shadow building to get a deploy folder... but for now this is not important.

    And the proof of the SDK installation : SDK Folder

    The last idea I had was to start debugging using Visual Studio. So I Install the Visual Studio Add-in from there qt-vs-addin-1.2.4. Once I open Visual Studio :
    1 - I click on the Qt5 menu
    2 - I click on the Qt Options
    3 - Button Add
    4 - In the version name : BBBWinCE7_SDK
    5 - In the path : H:\DevelopmentTests\qt-everywhere-opensource-src-5.4.1\qtbase
    6 - Click on the OK button

    Here is the error I'm getting : Error image

    I'm very desperate and out of idea... Hope someone will propose me some other solutions.

    Best regards,



  • I finally succeed to get something displaying after launching the QML application :) My structure was not entirely correct.

    Here is what I have now :

    Deploy Folder\ :.
    |   msvcr90.dll
    |   Qt5Core.dll
    |   Qt5Declarative.dll
    |   Qt5Gui.dll
    |   Qt5Network.dll
    |   Qt5OpenGL.dll
    |   Qt5Qml.dll
    |   Qt5Quick.dll
    |   Qt5QuickTest.dll
    |   Qt5Script.dll
    |   Qt5ScriptTools.dll
    |   Qt5Sql.dll
    |   Qt5Svg.dll
    |   Qt5Test.dll
    |   Qt5Widgets.dll
    |   Qt5Xml.dll
    |   Qt5XmlPatterns.dll
    |   MyApplication.exe       // My Application
    |   
    +---imageformats
    |       qdds.dll
    |       qddsd.dll
    |       qgif.dll
    |       qgifd.dll
    |       qicns.dll
    |       qicnsd.dll
    |       qico.dll
    |       qicod.dll
    |       qjpeg.dll
    |       qjpegd.dll
    |       qmng.dll
    |       qmngd.dll
    |       qsvg.dll
    |       qsvgd.dll
    |       qtga.dll
    |       qtgad.dll
    |       qtiff.dll
    |       qtiffd.dll
    |       qwbmp.dll
    |       qwbmpd.dll
    |       qwebp.dll
    |       qwebpd.dll
    |       
    +---platforms
    |       msvcr90.dll
    |       qminimal.dll
    |       qoffscreen.dll
    |       qwindows.dll
    |       
    +---qml
    |   \---MyApplication           // Nothing here as I have a qrc file, so all is embedded in exe ?
    +---Qt
    |   +---labs
    |   |   +---folderlistmodel
    |   |   |       plugins.qmltypes
    |   |   |       qmldir
    |   |   |       qmlfolderlistmodelplugin.dll
    |   |   |       qmlfolderlistmodelplugind.dll
    |   |   |       
    |   |   \---settings
    |   |           plugins.qmltypes
    |   |           qmldir
    |   |           qmlsettingsplugin.dll
    |   |           qmlsettingsplugind.dll
    |   |           
    |   \---WebSockets
    |           declarative_qmlwebsockets.dll
    |           declarative_qmlwebsocketsd.dll
    |           plugins.qmltypes
    |           qmldir
    |           
    +---QtBluetooth
    |       declarative_bluetooth.dll
    |       declarative_bluetoothd.dll
    |       plugins.qmltypes
    |       qmldir
    |       
    +---QtGraphicalEffects
    |   |   Blend.qml
    |   |   BrightnessContrast.qml
    |   |   Colorize.qml
    |   |   ColorOverlay.qml
    |   |   ConicalGradient.qml
    |   |   Desaturate.qml
    |   |   DirectionalBlur.qml
    |   |   Displace.qml
    |   |   DropShadow.qml
    |   |   FastBlur.qml
    |   |   GammaAdjust.qml
    |   |   GaussianBlur.qml
    |   |   Glow.qml
    |   |   HueSaturation.qml
    |   |   InnerShadow.qml
    |   |   LevelAdjust.qml
    |   |   LinearGradient.qml
    |   |   MaskedBlur.qml
    |   |   OpacityMask.qml
    |   |   qmldir
    |   |   RadialBlur.qml
    |   |   RadialGradient.qml
    |   |   RectangularGlow.qml
    |   |   RecursiveBlur.qml
    |   |   ThresholdMask.qml
    |   |   ZoomBlur.qml
    |   |   
    |   \---private
    |           FastGlow.qml
    |           FastInnerShadow.qml
    |           FastMaskedBlur.qml
    |           GaussianDirectionalBlur.qml
    |           GaussianGlow.qml
    |           GaussianInnerShadow.qml
    |           GaussianMaskedBlur.qml
    |           SourceProxy.qml
    |           
    +---QtLocation
    |       declarative_location.dll
    |       declarative_locationd.dll
    |       plugins.qmltypes
    |       qmldir
    |       
    +---QtMultimedia
    |       declarative_multimedia.dll
    |       declarative_multimediad.dll
    |       plugins.qmltypes
    |       qmldir
    |       Video.qml
    |       
    +---QtNfc
    |       declarative_nfc.dll
    |       declarative_nfcd.dll
    |       plugins.qmltypes
    |       qmldir
    |       
    +---QtPositioning
    |       declarative_positioning.dll
    |       declarative_positioningd.dll
    |       plugins.qmltypes
    |       qmldir
    |       
    +---QtQml
    |   +---Models.2
    |   |       modelsplugin.dll
    |   |       modelsplugind.dll
    |   |       qmldir
    |   |       
    |   \---StateMachine
    |           plugins.qmltypes
    |           qmldir
    |           qtqmlstatemachine.dll
    |           qtqmlstatemachined.dll
    |           
    +---QtQuick
    |   +---LocalStorage
    |   |       plugins.qmltypes
    |   |       qmldir
    |   |       qmllocalstorageplugin.dll
    |   |       qmllocalstorageplugind.dll
    |   |       
    |   +---Particles.2
    |   |       particlesplugin.dll
    |   |       particlesplugind.dll
    |   |       plugins.qmltypes
    |   |       qmldir
    |   |       
    |   +---Window.2
    |   |       plugins.qmltypes
    |   |       qmldir
    |   |       windowplugin.dll
    |   |       windowplugind.dll
    |   |       
    |   \---XmlListModel
    |           plugins.qmltypes
    |           qmldir
    |           qmlxmllistmodelplugin.dll
    |           qmlxmllistmodelplugind.dll
    |           
    +---QtQuick.2
    |       plugins.qmltypes
    |       qmldir
    |       qtquick2plugin.dll
    |       qtquick2plugind.dll
    |       
    +---QtSensors
    |       declarative_sensors.dll
    |       declarative_sensorsd.dll
    |       plugins.qmltypes
    |       qmldir
    |       
    +---QtTest
    |       plugins.qmltypes
    |       qmldir
    |       qmltestplugin.dll
    |       qmltestplugind.dll
    |       SignalSpy.qml
    |       TestCase.qml
    |       testlogger.js
    |       
    \---QtWebChannel
            declarative_webchannel.dll
            declarative_webchanneld.dll
            plugins.qmltypes
            qmldir      
    
    

    But I still have a problem, I'm using svg image in my qrc file and display it using an image element (source : "qrc:/img..."). On Windows Desktop there no problem the image are display but on Windows Embedded Compact 7 they are not display. More, to allow application to start I have to rename the folder imageformats else the application do nothing. While the imageformats folder is here the application start but I have no images. What could be the problem ? A missing pluging ?

    About the Visual Studio setup problem versus the SDK I did not found any solution yet, this is VERY, VERY annoying !

    Best regards,


  • Lifetime Qt Champion

    Do you have the svg plugin on WEC7 ?



  • How to know?

    If the dll "/imagesformats/qsvg.dll" is here and the "qtsvg.dll" is also at the root of the project, is that correct ?


  • Lifetime Qt Champion

    That part looks good



    • list itemI create a QtQuick2 empty exemple.
    • Copy the executable on the SDCard deploy folder, \DeployFolder
    • I copy the folder \qml to *\DeployFolder*
    • I copy the folder \plugins to *\DeployFolder*
    • I copy ALL the DLL of \bin to *\DeployFolder*
    • I copy the file msvcr90.dll to *\DeployFolder*

    Still no result, the application is hanging while starting, no output. What could be missing ? I've put ALL what exists from the build directory of QT ! This is very annoying :(

    The SVG seems to be buggy on Windows CE or there something that I don't understand yet.

    Somebody has another idea ?


  • Lifetime Qt Champion

    Then let's get back to the basics, can you run a simple hello world ?



  • Yes without any problem.

    I can also run application based Widget.

    I can also run QtQuick2 application if I don't include the /imageformats folder. But this way I cannot use any svg images or any other image that need plugin inside of this folder. As long as I include the /imageformats folder, the application start but I have no display.


  • Lifetime Qt Champion

    Ok, then do you have the problem only with the svg plugin or any of the other ?



  • Here is what I have tried :

    • I create an empty QtQuick2 project and copy it to my deploy. The deploy folder is having ALL QT plugins, dll, etc...
      • Copy the executable on the SDCard deploy folder, \DeployFolder
      • I copy the folder \qml to \DeployFolder
      • I copy the folder \plugins to \DeployFolder
      • I copy ALL the DLL of \bin to \DeployFolder
      • I copy the file msvcr90.dll to \DeployFolder

    I launch the executable and then it start properly and I have a window with graphical output.

    Secondly I add this to application :

    <RCC>
        <qresource prefix="/">
            <file>main.qml</file>
            <file>MainForm.ui.qml</file>
            <file>CMYK.jpg</file>
        </qresource>
    </RCC>
    
    Window {
        visible: true
        MainForm {
            anchors.fill: parent
            Image {
                source: "qrc:/CMYK.jpg"
                width : 80;  height : 80;
            }
        }
    }
    

    It start properly with graphical output.

    Now I remove the jpg image and replace it by one of my SVG file. Surprise, it works also !!!

    Now I tried to add 5 more SVG images to my resource file and create 5 more images element to my qml, but this time it failed ! Same problem as my original application. Now we can deduce that this is the number of images that makes the application crash or is it a particular image QT dislikes. To be sure I have tried with some of the svg images that I found in *src\qtsvg\examples\svg*, some works, other not.

    After doing some test, I conclude that some svg image are crashing application and other simply work. This is weird, those image a very tiny icon not complex. And why they are ALL working on Windows Desktop but not on Windows CE ? Is there any limitation or know issue on Windows CE about SVG images ? I hope someone here can confirm this and provide a fix if possible.

    As example, those one are not working on Windows CE:

    Image { source: "qrc:/bubbles.svg"; sourceSize.width: 60; sourceSize.height: 60; width : 60; height : 60}
    Image { source: "qrc:/volume-up.svg"; sourceSize.width: 60; sourceSize.height: 60; width : 60; height : 60}
    Image { source: "qrc:/spinner.svg"; sourceSize.width: 60; sourceSize.height: 60; width : 60; height : 60}
    

  • Lifetime Qt Champion

    Can you check whether they use the same SVG standard ?



  • This the ones that are coming with QT example... they should work.


  • Lifetime Qt Champion

    At least bubbles.svg is animated, so I wonder if it has something to do with it


Log in to reply
 

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