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

Deploy qt desktop app 'Driver not loaded'



  • Hi, I'm new in the forum ...

    Recently I have been developing an QT desktop application, using mysql drivers and MSVC 2017 x64.

    I use this configuration to add libmysql.lib to mysql 5.7 driver (I use Laragon MYSQL DB 64 bits)

    Mysql driver from : https://dev.mysql.com/downloads/mysql/5.7.html

    Code generate from qt add library

    win32:CONFIG(release, debug|release): LIBS += -LC:/Users/Adrian/Desktop/mysql-5.7.26-winx64/lib/ -llibmysql
    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/Users/Adrian/Desktop/mysql-5.7.26-winx64/lib/ -llibmysqld

    With the qtcreator that conf work fine, but when I deploy my project I have problems with the mysqldriver

    I use this comand to deploy : 'windeployqt myapp.exe ' and 'windeployqt . '

    alt text
    alt text
    alt text

    I've been looking for a solution, but I'm going 2 days and nothing happend.

    I tried : add .lib and .include dir in Environment Variables, add libmysql.dll and others dll in C:/Windows and paste .lib mysql to D:\Programas\QT\5.12.3\msvc2017_64\plugins\sqldrivers and also in my release/sqldrivers after the deploy

    Sorry, my english is no so good



  • I found the solution:

        
    #include "controlador.h"
    #include "qmessagebox.h"
    
    controlador::controlador()
    {
    
    }
    
    static QSqlDatabase con=conexion().conecta();
    

    to

    usuario controlador::logear(acceso ac)
    {
        usuario us= usuario();
    
        QSqlDatabase con=conexion().conecta();
    
        QSqlQuery query(con);
    
    #include "vistas/login.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication::libraryPaths();
        QApplication a(argc, argv);
        login w;
        w.show();
    
        return a.exec();
    }
    

    https://forum.qt.io/topic/66480/deploy-on-windows/14

    I think because static db conection, windeployqt work fine


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    First and very important thing: NEVER put anything in "C:/Windows", that's a pretty bad thing to do that can have major consequences on your installed software.

    You should only need to copy the MySQL dll(s) in the same folder as your application.



  • @SGaist I copy libmysql.dll and libmysqld.dll in /release/sqldriver in the same folder but I have 'Driver not loaded' error, equal to copy to /release folder

    alt text


  • Lifetime Qt Champion

    I meant in the same folder as your executable.



  • @SGaist alt text

    The same error in the executable folder



  • I change mysql version to 8.0, using workbrench to create the database. Using c++ conector

    alt text

    Add mysqlcppconn.lib

    copy and paste this dll in executable folder
    copy and paste this dll in executable folder /sqldrivers
    alt text

    But, I had mysql driver not loaded

    Also I tried to connect using ODBC Mysql

    alt text

    The conection between the database work fine, but I can't execute query like 'SELECT ID_usuario,nombre,apellido,dni,telefono,correo,cargo,direccion FROM usuario WHERE user = :user and pass = :pass; ', all return -1 in query.size, is the same code that I used in qmysql , query.lastError().text() return empty

    alt text


  • Lifetime Qt Champion

    You can set the QT_DEBUG_PLUGINS environment variable to check what is going on with them.



  • @SGaist Yes, I add QT_DEBUG_PLUGINS = 1 in qtcreator system enviroment

    When I deploy my app with windeploy and run in qtcreator (is equal to open .exe app) release

    .pro file mysql

    win32: LIBS += -LC:/Users/Adrian/Desktop/mysql-5.7.26-winx64/lib/ -llibmysql

    INCLUDEPATH += C:/Users/Adrian/Desktop/mysql-5.7.26-winx64/include
    DEPENDPATH += C:/Users/Adrian/Desktop/mysql-5.7.26-winx64/include

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers:
    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
    "Driver not loaded Driver not loaded"

    When I use ODBC, no windeploy, in qtcreator debug.

    Got keys from plugin meta data ("windowsvista")
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/styles" ...
    loaded library "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll"
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/accessiblebridge" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/accessiblebridge" ...
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbcd.dll"
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll"
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindowsd.dll"

    Using again Laragon Mysql 5.7.24


  • Lifetime Qt Champion

    The very first object you must create is a QCoreApplication (or QQuiApplication/QApplication) otherwise the required internals won't be initialised.



  • @SGaist Do you mean to main.cpp?

    This is my main.cpp

    #include "vistas/login.h"
    #include <QApplication>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    login w;
    w.show();

    return a.exec();
    

    }

    If change to QCoreApplication

    #include "vistas/login.h"
    #include <QCoreApplication>

    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);
    login w;
    w.show();

    return a.exec();
    

    }

    QWidget: Cannot create a QWidget without QApplication
    16:27:10: The program has unexpectedly finished.
    16:27:10: The process was ended forcefully.
    16:27:10: D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Release/release/restaurante_tunqui.exe crashed.


  • Lifetime Qt Champion

    The ODBC failure you had was because of a missing QCoreApplication based object.

    Your current error comes from the fact that you are trying to show a widget while you created only a QCoreApplication. Qt widgets requires a QApplication object.



  • @SGaist I don´t understand , do you mean this error to QODBC?

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers:
    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
    "Driver not loaded Driver not loaded"

    This is QMYSQL error when I deploy my app and run. QTCreator gives me a better error report instead of opening my .exe app

    Sorry if I also confused him by using 2 drivers

    • QMYSQL work fine with qtcreator, but no after deployment

    • QODBC only open database in qtcreator , but no work SELECT (I use the same queries for both)

    Conection file conexion.cpp

    #include "conexion.h"
    
    conexion::conexion()
    {
    
    }
    
    QSqlDatabase conexion::conecta()
    {
        /*QSqlDatabase db;
        db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("localhost");
        db.setUserName("root");
        db.setPassword("");
        db.setDatabaseName("tunqui_restaurante");*/
    
        QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        db.setDatabaseName("Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;DATABASE=tunqui_restaurante;");
        db.setUserName("root");
        db.setPassword("");
    
    
        if (db.open()){
             qDebug() << "true";
        }
        else {
            qDebug() << db.lastError().text();
        }
    
        return db;
    }
    

    Conection file conexion.h

    #ifndef CONEXION_H
    #define CONEXION_H
    
    #include <QtSql>
    
    
    class conexion
    {
    public:
        conexion();
        QSqlDatabase conecta();
    };
    
    #endif // CONEXION_H
    

    controller file controlador.cpp

    #include "controlador.h"
    
    controlador::controlador()
    {
    
    }
    
    static QSqlDatabase con=conexion().conecta();
    
    //ingresar
    
    usuario controlador::logear(acceso ac)
    {
        usuario us= usuario();
    
        QSqlQuery query(con);
    
        QString sentence= "SELECT ID_usuario,nombre,apellido,dni,telefono,correo,cargo,direccion FROM usuario WHERE user = :user and pass = :pass; ";
        query.prepare(sentence);
        query.bindValue(":user",ac.get_user());
        query.bindValue(":pass",ac.get_pass());
    
    
        query.exec();
    
    
        if (query.size()>0)
        {
            while(query.next())
            {
                us.set_ID_usuario(query.value("ID_usuario").toInt());
                us.set_nombre(query.value("nombre").toString());
                us.set_apellido(query.value("apellido").toString());
                us.set_dni(query.value("dni").toString());
                us.set_telefono(query.value("telefono").toString());
                us.set_correo(query.value("correo").toString());
                us.set_cargo(query.value("cargo").toInt());
                us.set_direccion(query.value("direccion").toString());
    
            }
        }
    
    
        return us;
    }
    

  • Lifetime Qt Champion

    @AdrianN17

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv); // <--- HERE
    login w;
    w.show();
    
    return a.exec();
    
    }
    
    
    


  • @jsulm said in Deploy qt desktop app 'Driver not loaded':

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv); // <--- HERE
    login w;
    w.show();

    return a.exec();

    }

    I don't understand. What should it be there?

    If I change QApplication for QCoreApplication = QWidget: Cannot create a QWidget without QApplication

    Sorry I'm newbie using the QMySQL driver and libmysql.dll

    The problem is after deploying my desktop app.


  • Lifetime Qt Champion

    @AdrianN17 said in Deploy qt desktop app 'Driver not loaded':

    QApplication

    instead of QCoreApplication.



  • @jsulm Ok thanks, but I was using QApplication from the beginning.


  • Lifetime Qt Champion

    @AdrianN17 If you have "Cannot create a QWidget without QApplication" error with QApplication, then you're creating QWidget based class instance somewhere before QApplication instance is created. You need to check that. Do you have any static objects?



  • @jsulm I only was tested using a QCoreApplication instead QApplication :

    @SGaist said in Deploy qt desktop app 'Driver not loaded':

    The very first object you must create is a QCoreApplication (or QQuiApplication/QApplication) otherwise the required internals won't be initialised.

    Because I have that problem when I deploy and execute my app:

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers:
    QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
    "Driver not loaded Driver not loaded"

    Because so far, I only had that error doing the test. The only problem really is with QMysql driver not loaded

    Excuse me if I confused you


  • Lifetime Qt Champion

    @AdrianN17 said in Deploy qt desktop app 'Driver not loaded':

    I only was tested using a QCoreApplication instead QApplication

    Again: if you're using widgets in your app you have to use QApplication.
    And if you then have that error message then please check whether or not you're creating any QWidget based objects before QApplication or post whole code here, so we can check. Else I can't help you.



  • @jsulm

    QMYSQL - libmysql.dll mysql-5.7.26-winx64 driver

    .pro

    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    
    
    
    
    win32: LIBS += -LC:/Users/Adrian/Desktop/mysql-5.7.26-winx64/lib/ -llibmysql
    
    INCLUDEPATH += C:/Users/Adrian/Desktop/mysql-5.7.26-winx64/include
    DEPENDPATH += C:/Users/Adrian/Desktop/mysql-5.7.26-winx64/include
    

    QT DEBUG PLUGINS

    01:57:42: Starting D:\Proyectos\Proyecto_Restaurante_Qt\build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug\debug\restaurante_tunqui.exe ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers" ...
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlite.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlite.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QSQLITE"
            ]
        },
        "archreq": 0,
        "className": "QSQLiteDriverPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlite.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlited.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlited.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QSQLITE"
            ]
        },
        "archreq": 1,
        "className": "QSQLiteDriverPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("QSQLITE")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysql.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysql.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QMYSQL3",
                "QMYSQL"
            ]
        },
        "archreq": 0,
        "className": "QMYSQLDriverPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysql.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QMYSQL3",
                "QMYSQL"
            ]
        },
        "archreq": 1,
        "className": "QMYSQLDriverPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("QMYSQL3", "QMYSQL")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbc.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbc.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QODBC3",
                "QODBC"
            ]
        },
        "archreq": 0,
        "className": "QODBCDriverPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbc.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbcd.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlodbcd.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QODBC3",
                "QODBC"
            ]
        },
        "archreq": 1,
        "className": "QODBCDriverPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("QODBC3", "QODBC")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QPSQL7",
                "QPSQL"
            ]
        },
        "archreq": 0,
        "className": "QPSQLDriverPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlpsql.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlpsqld.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QPSQL7",
                "QPSQL"
            ]
        },
        "archreq": 1,
        "className": "QPSQLDriverPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("QPSQL7", "QPSQL")
    loaded library "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll"
    true
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qdirect2d.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qdirect2d.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "direct2d"
            ]
        },
        "archreq": 0,
        "className": "QWindowsDirect2DIntegrationPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qdirect2d.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qdirect2dd.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qdirect2dd.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "direct2d"
            ]
        },
        "archreq": 1,
        "className": "QWindowsDirect2DIntegrationPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("direct2d")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qminimal.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qminimal.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "archreq": 0,
        "className": "QMinimalIntegrationPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qminimal.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qminimald.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qminimald.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "archreq": 1,
        "className": "QMinimalIntegrationPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("minimal")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qoffscreen.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qoffscreen.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "offscreen"
            ]
        },
        "archreq": 0,
        "className": "QOffscreenIntegrationPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qoffscreen.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qoffscreend.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qoffscreend.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "offscreen"
            ]
        },
        "archreq": 1,
        "className": "QOffscreenIntegrationPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("offscreen")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwebgl.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwebgl.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "webgl"
            ]
        },
        "archreq": 0,
        "className": "QWebGLIntegrationPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwebgl.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwebgld.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwebgld.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "webgl"
            ]
        },
        "archreq": 1,
        "className": "QWebGLIntegrationPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("webgl")
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindows.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindows.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "windows"
            ]
        },
        "archreq": 0,
        "className": "QWindowsIntegrationPlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindows.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindowsd.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindowsd.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "windows"
            ]
        },
        "archreq": 1,
        "className": "QWindowsIntegrationPlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("windows")
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/platforms" ...
    loaded library "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindowsd.dll"
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes" ...
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes/qxdgdesktopportal.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes/qxdgdesktopportal.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1",
        "MetaData": {
            "Keys": [
                "xdgdesktopportal",
                "flatpak",
                "snap"
            ]
        },
        "archreq": 0,
        "className": "QXdgDesktopPortalThemePlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes/qxdgdesktopportal.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes/qxdgdesktopportald.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/platformthemes/qxdgdesktopportald.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1",
        "MetaData": {
            "Keys": [
                "xdgdesktopportal",
                "flatpak",
                "snap"
            ]
        },
        "archreq": 1,
        "className": "QXdgDesktopPortalThemePlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("xdgdesktopportal", "flatpak", "snap")
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/platformthemes" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles" ...
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyle.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyle.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QStyleFactoryInterface",
        "MetaData": {
            "Keys": [
                "windowsvista"
            ]
        },
        "archreq": 0,
        "className": "QWindowsVistaStylePlugin",
        "debug": false,
        "version": 330752
    }
    
    
    "The plugin 'D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyle.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)" 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll"
    Found metadata in lib D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll, metadata=
    {
        "IID": "org.qt-project.Qt.QStyleFactoryInterface",
        "MetaData": {
            "Keys": [
                "windowsvista"
            ]
        },
        "archreq": 1,
        "className": "QWindowsVistaStylePlugin",
        "debug": true,
        "version": 330752
    }
    
    
    Got keys from plugin meta data ("windowsvista")
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/styles" ...
    loaded library "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll"
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Programas/QT/5.12.3/msvc2017_64/plugins/accessiblebridge" ...
    QFactoryLoader::QFactoryLoader() checking directory path "D:/Proyectos/Proyecto_Restaurante_Qt/build-restaurante_tunqui-Desktop_Qt_5_12_3_MSVC2017_64bit-Debug/debug/accessiblebridge" ...
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/sqldrivers/qsqlmysqld.dll" 
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/styles/qwindowsvistastyled.dll" 
    QLibraryPrivate::unload succeeded on "D:/Programas/QT/5.12.3/msvc2017_64/plugins/platforms/qwindowsd.dll"
    

    After deploy

    alt text
    alt text
    *Profile and Release have the same result

    Before deploy
    alt text
    alt text



  • Change my odbc conection

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        db.setDatabaseName("Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;DATABASE=tunqui_restaurante;");
        db.setUserName("root");
        db.setPassword("");
    

    and my query

    //if (query.size()>0) comment this line
        {
     while(query.next())
            {
                us.set_ID_usuario(query.value("ID_usuario").toInt());
                us.set_nombre(query.value("nombre").toString());
                us.set_apellido(query.value("apellido").toString());
                us.set_dni(query.value("dni").toString());
                us.set_telefono(query.value("telefono").toString());
                us.set_correo(query.value("correo").toString());
                us.set_cargo(query.value("cargo").toInt());
                us.set_direccion(query.value("direccion").toString());
    
            }
    //}
    

    ODBC conection work fine and I can log in my app (error code fixed)

    But when I deploy with windeployqt I had the same problem with QMYSQL

    windeployqt command : windeployqt restaurante_tunqui.exe

    alt text



  • I found the solution:

        
    #include "controlador.h"
    #include "qmessagebox.h"
    
    controlador::controlador()
    {
    
    }
    
    static QSqlDatabase con=conexion().conecta();
    

    to

    usuario controlador::logear(acceso ac)
    {
        usuario us= usuario();
    
        QSqlDatabase con=conexion().conecta();
    
        QSqlQuery query(con);
    
    #include "vistas/login.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication::libraryPaths();
        QApplication a(argc, argv);
        login w;
        w.show();
    
        return a.exec();
    }
    

    https://forum.qt.io/topic/66480/deploy-on-windows/14

    I think because static db conection, windeployqt work fine


  • Lifetime Qt Champion

    There's really no need for any static (nor class variable) QDatabase object. QDatabase already provide all methods needed to create and retrieve database connection when needed.



  • Sure. It was a mistake using static QSqlDatabase object, because only fail at the deployment.

    Thanks guys.


Log in to reply