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

No icons when deploy application using SVG files



  • Hello,

    i'm having trouble to deploy an application with svg images. If i use png files there is no problem. i tried nearly everything like adding

    @Q_INIT_RESOURCE(application);@

    or using a qt.conf

    @[Paths]
    Plugins = plugins@

    and copied the plugins/imageformats (also iconengines and sqldrivers) folder.

    i'm not sure what i'm do wrong... (i also using sqlite, if i point with Plugins to nowhere its not working, with Plugins=plugins it works again, so it can't be the wrong path)



  • Which platform are you on?



  • I'm on windows... i figured out... it was the qtmxl4.dll. The DependencyWalker didn't show it, but to show svg files you have to delpoy xml to (ok, svg files are xml files;-) ). But no site and no doc shows this depenency



  • AFAIK, the dependency walker does not consider the plugins. But you can load the plugin itself into dependency walker and it shows the needed QtXml then.

    The missing cross dependencies is indeed a good point. These should be listed somewhere.



  • [quote author="Volker" date="1296916827"]The missing cross dependencies is indeed a good point. These should be listed somewhere.[/quote]

    I've just added "Qt library cross dependencies":http://developer.qt.nokia.com/wiki/Qt_library_cross_dependencies to the wiki.



  • Damn... again...
    The QtXml was only in first place a problem... so it works on my system... but after deploy i have the same problems like before... no sqldriver, no icons...



  • I compiled a static version of qt from source based on "this":http://developer.qt.nokia.com/wiki/Build_Static_Qt_For_Windows_With_Gcc_German

    After build a static version of my program i the i have sqlite support, but the icons are still missing (did i forget a parameter?)



  • You need

    • QtSvg library
    • plugin iconengines/libqsvgicon.dll
    • plugin imageformats/libqsvg.dll
    • the dependencies: QtCore, QtGui, QtXml library

    all in the proper directories.

    Also, you might want to add the plugin path manually. Add the following your main function, right before doing any Qt related stuff that needs the plugins (eg. GUI classes):

    @
    QStringList libPaths = QCoreApplication::libraryPaths();
    libPaths << QCoreApplication::applicationDirPath + "/plugins";
    QCoreApplication::setLibraryPaths(libPaths);
    @

    I have the above in my code and all plugins are found.



  • Still nothing (or its to late...)
    Maybe i make a mistake, so step for step:

    1. clone my rep: git@gitorious.org:fixtestpc/fixtestpc.git
    2. open project with qt-creator
    3. add your code to main/main.cpp
    4. choose project "main" and build it with "release" (takes 3-4 minutes)
    5. copy the application to INSTALL
    6. copy libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll QtOpenGL4.dll QtSvg4.dll QtXml4.dll from C:\Qt\2010.05\qt\bin to INSTALL
    7. copy qsvg4.dll from C:\Qt\2010.05\qt\plugins\imageformats to INSTALL/plugins
    8. copy qsvgicon4.dll from C:\Qt\2010.05\qt\plugins\iconengines to INSTALL/plugins
    9. copy qsqlite4.dll from C:\Qt\2010.05\qt\plugins\sqldrivers to INSTALL/plugins

    deploy the application to another computer ... application without svg images and sqlite support...

    tomorrow (nope... today) i have diploma defense and this thing will not work -.-



  • You have wrong paths:

    • QSvg4.dll goes into INSTALL
    • the plugins must go into a subdir of plugins with the same name they came from (qsvgicon4.dll goes to INSTALL/plugins/iconengines/; qsqlite4.dll goes to INSTALL/plugins/sqldrivers and so on)


  • That helped... thx.
    But i had another problem... i've added your code before create the application... so the path wasn't set correct.

    Thx for help



  • You should add the code in the main() function, after the creation of QApplication but before doing the GUI stuff.



  • yes... i did... but not in the first time ;-)



  • This looks like exactly the problem i am having... it is very irritating that it works fine in debug on dev machines, and only breaks on user machines...

    Thanks Volker, i will try it tonight.



  • Sorry, that's not irritating, but just plain normal.

    On you dev machines you have everything in place, so the parts needed are found. On the user machines you have to install every single piece yourself, if only one is missing, your applications or parts of it can break.



  • Volker, it seems a similar problem I had using jpg against png images. But in my case I set properly all the dll and the problem remain unsolved... Is it possible that the same principle can be applied also in my case?

    Thks



  • [quote author="Alicemirror" date="1298992583"]Volker, it seems a similar problem I had using jpg against png images. But in my case I set properly all the dll and the problem remain unsolved... Is it possible that the same principle can be applied also in my case?
    [/quote]

    Yes, of course. It does not depend if your dealing with svg or png or jpg (despite the fact that you might have different "cross dependencies":http://developer.qt.nokia.com/wiki/Qt_library_cross_dependencies



  • Mmmh... Strange that my previous post about this you missed.
    If you have five minutes, please take a look to the link: http://developer.qt.nokia.com/forums/viewthread/4028/ This was my first post, but the moderator moved this to the area related to deployment and installations... Then I find a solution (not a final solution, but a solution for this particular case) here:
    http://developer.qt.nokia.com/forums/viewthread/4087/
    But this post is actually without answer...

    Thks.



  • [quote author="Alicemirror" date="1298997133"]Mmmh... Strange that my previous post about this you missed.
    If you have five minutes, please take a look to the link: http://developer.qt.nokia.com/forums/viewthread/4028/ This was my first post, but the moderator moved this to the area related to deployment and installations... Then I find a solution (not a final solution, but a solution for this particular case) here:
    http://developer.qt.nokia.com/forums/viewthread/4087/
    But this post is actually without answer...

    Thks.[/quote]

    I merged both threads as it's on the very same topic. You've been pointed to some reading - not clear if you read (and and understood) these already.


Log in to reply