Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Unsolved Programme QT ne reconnait les drivers MYSQL

    French
    qt5.6 sqlite driver plugins drivers yocto
    2
    6
    765
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nikoPol last edited by

      Bonjour,

      Je reprends le travail d'un ancien salarié de ma boite. L'ancien salarié a créer un OS grâce à Yocto pour un ARM.
      Sur cet OS, il y a QT5.6.3 d'installé. Le programme QT est compilé sur un PC avec le SDK adéquat. Le fichier binaire de Qt après un qmake et un make est exécuté sur l'ARM.

      #include <QtSql>
      #include <QSqlDatabase>
      #include <QDebug>
      
      int main(int argc, char *argv[])
      {
          QCoreApplication a(argc, argv);
          qDebug() << QSqlDatabase::drivers();
      }
      

      Lorsque j’exécute ce code sur le PC j'ai : ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
      Mais lorsque je l'exécute sur l'ARM je n'ai rien : ()

      Sur l'ARM, dans mon /usr/lib/qt5/plugins j'ai :

      audio                  iconengines            platforminputcontexts  playlistformats        xcbglintegrations
      bearer                 imageformats           platforms              qmltooling
      generic                mediaservice           platformthemes
      

      Et même si je rajoute la librairie sqldrivers avec les fichierslibqsqlite.so libqsqlmysql.so libqsqlodbc.so libqsqlpsql.so

      audio                  iconengines            platforminputcontexts  playlistformats        xcbglintegrations
      bearer                 imageformats           platforms              qmltooling
      generic                mediaservice           platformthemes         sqldrivers
      

      Le programme fait la même chose.

      Merci par avance.

      KroMignon 1 Reply Last reply Reply Quote 0
      • KroMignon
        KroMignon @nikoPol last edited by

        @nikoPol Bonjour, une première chose serait de vérifier que l'installation de Qt a été faite avec les plugins SQL et qu'il est possible de les charger.

        Pour cela, il faut lancer le programme avec QT_DEBUG_PLUGINS=1.
        Par exemple, si le programme se nomme sqltest : QT_DEBUG_PLUGINS=1 ./sqltest

        De cette façon, le framework Qt va écrire sur la sortie standard tout ce qu'il est capable de trouver et charger comme plugin.

        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

        1 Reply Last reply Reply Quote 2
        • N
          nikoPol last edited by

          Bonjour,

          Tout d'abord merci de votre réponse.

          J'obtiens :

          root@machine-am335x-evmsk:~# QT_DEBUG_PLUGINS=1 ./Projet
          
          QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5/plugins/sqldrivers" ...
          QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so"
          QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)
          "'/usr/lib/qt5/plugins/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so"
          QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)
          "'/usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so"
          QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)
          "'/usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so"
          QElfParser: '/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)
          "'/usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() checking directory path "/home/root/sqldrivers" ...
          QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlite.so"
          QElfParser: '/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)
          "'/home/root/sqldrivers/libqsqlite.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlmysql.so"
          QElfParser: '/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)
          "'/home/root/sqldrivers/libqsqlmysql.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlodbc.so"
          QElfParser: '/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)
          "'/home/root/sqldrivers/libqsqlodbc.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          QFactoryLoader::QFactoryLoader() looking at "/home/root/sqldrivers/libqsqlpsql.so"
          QElfParser: '/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)
          "'/home/root/sqldrivers/libqsqlpsql.so' is an invalid ELF object (wrong cpu architecture)"
                   not a plugin
          ()
          

          Que faire ?

          KroMignon 1 Reply Last reply Reply Quote 0
          • KroMignon
            KroMignon @nikoPol last edited by KroMignon

            @nikoPol Bonjour, c'est pourtant simple, vous avez installé des plugins qui sont pas les bons... Je pense que vous avez copié les plugins de votre station de travail (certainement x86) sur votre cible (qui est un processeur ARM).

            Il vous faut compiler les plugins SQL pour votre cible, donc mettre à jour votre image Yocto et installer la nouvelle image sur votre cible.

            It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

            1 Reply Last reply Reply Quote 2
            • N
              nikoPol last edited by

              Ok, je vous remercie.
              Il n'y a pas d'autre moyen d'avoir les librairies dans le format nécessaire : ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV) ?

              KroMignon 1 Reply Last reply Reply Quote 0
              • KroMignon
                KroMignon @nikoPol last edited by KroMignon

                @nikoPol said in Programme QT ne reconnait les drivers MYSQL:

                Il n'y a pas d'autre moyen

                Non, il faut compiler les drivers pour votre cible avec les paramètres adéquats, soit directement à partir de Yocto, soit "à la main", à partir des sources de Qt.

                Peut-être que ce lien pourra vous être utile: https://www.udoo.org/forum/threads/solved-how-to-use-sql-model-with-qt5-layer.5136/

                Désolé, je n'ai que des connaissances de base concernant Yocto... Et ca fait bien 3 ans que je ne l'ai plus mis en oeuvre!

                It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post