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

Desplegar aplicación en windows con. postgresql



  • Hola,

    Todo funciona bien en mi PC, puedo conectarme al driver de postgresql.

    He desarrollado una aplicación con c ++ y algunos archivos en qml, que se conectan a una base de datos postgresql.
    He compilado mi ejecutable con mingw73_64, que es lo que trae la instalación de Qt 5.12.1.
    Desde mi PC, intenté conectarme a una base de datos que es independiente de la arquitectura, es decir, me conecto a una base de datos postgresql 9.2 de 32 bits y a una base de datos postgresql 11 de 64 bits, y todo funciona.
    Cuando intento implementar mi aplicación para usarla en otras PC, uso esto:

    windeployqt --qmldir <path-to-app-qml-files> <path-to-app-binary>

    que es como viene en la descripción de mi qt. Esto genera todos los dll asociados con mi aplicación, pero faltan los de postgres, por lo que he copiado las siguientes bibliotecas encontradas en la instalación de postgres:

    para 64 bits
    libeay32.dll
    libiconv-2.dll
    libintl-9.dll
    libpq.dll
    libxml2.dll
    libxslt.dll
    ssleay32.dll
    zlib1.dll

    o para 32 bits, en caso de que me conecte a la base de datos postgres de 32 bits
    libeay32.dll
    libintl.dll
    libpq.dll
    ssleay32.dll

    Cuando intento colocar estos archivos en otra PC, aparece un error de controlador no cargado.

    y tengo los archivos dll de postgres mencionados, tengo la carpeta sqldrivers con su dll qsqlpsql.dll, pero no funciona para mí.

    Intenté con dll diferente pero no lo entiendo.
    Traté de crear mi propia biblioteca como dice en la versión de qt

    cd% QTDIR% \ qtbase \ src \ plugins \ sqldrivers
    qmake - "PSQL_INCDIR = C: \ Archivos de programa \ PostgreSQL \ 11 \ include" PSQL_LIBDIR = "C: \ Archivos de programa \ PostgreSQL \ 11 \ lib \ ms"
    nmake sub-psql

    pero al hacer qmake desde la consola de Qt 5.12.1 (MinGW7.3.0 64 bit)

    Se me muestra una lista de los controladores sql, pero solo los de SQLITE y ODBC están activados, pero el de postgresql no.

    ¿Cuál podría ser el problema que no se conecta en otras PC y en la mía si se conecta?

    Antes de hacer este update de mi programa me funcionaba bien con 32 bit, pero ahora al compilarlo con 64 bit, no...

    No se que mas.hacer.
    Me imagino que sea un problema de que no me cargan las librerías de postgres de 64 bit.
    Si ha alguien le ha pasado algo parecido, ojala me puedan guiar.

    Saludos


  • Moderators

    Hola

    A parte de las librerías de Qt, creo que tienes que copiar alguna .dll de postgresql junto a tu ejecutable, mírate esta respuesta en otro hilo:

    https://forum.qt.io/topic/51719/conexion-de-postgresql-con-qt/4

    Un saludo



  • Hola,
    Te recomiendo utilizar la utilidad "Dependency Walker". Abres el EXE que deseas y te muestra una lista de las DLLs que necesita y si las encuentra o no. También te muestra la ruta dónde las ha encontrado.


  • Banned

    This post is deleted!

Log in to reply