Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Archivos faltantes al compilar en Qt

Estas en el tema de Archivos faltantes al compilar en Qt en el foro de C/C++ en Foros del Web. Hola amigos, gracias a todos ustedes me he animado a empezar a aprender Qt usando el IDE de visual studio 2013, ya esta configurado y ...
  #1 (permalink)  
Antiguo 10/04/2015, 04:30
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Archivos faltantes al compilar en Qt

Hola amigos, gracias a todos ustedes me he animado a empezar a aprender Qt usando el IDE de visual studio 2013, ya esta configurado y estoy haciendo el "hola mundo en Qt" jeje. El problema surge cuando genero los ejecutables, al intentar correrlos (por fuera del IDE) me sale el error "Que el archivo Qt5Core.dll no esta en mi equipo".

Según he leído eso es porque el archivo .exe necesita las librerías del Qt para funcionar. Y he encontrado 3 formas de solucionarlo:

1. Copiar todos los dll usados del directorio de Qt (en la subcarpeta bin) al directorio donde está nuestro ejecutable. Manualmente claro.
2. es crear un .bat en el directorio de nuestro exe, especificando la ruta de la variable "path" que es donde va a buscar el ejecutable las librerías. El contenido del .bat quedaría así: suponiendo que Qt está en la unidad C en el directorio por defecto
Código C++:
Ver original
  1. set path=%path%; C:\Qt\Qt5.4.1\5.4\msvc2013\bin
  2. tuProbrama.exe
3. La ultima forma que he encontrado es modificando las variables de entorno de windows, para ser exacto se adiciona la variable "path" y en el valor la dirección del bin del Qt.

Sus desventajas son:
1. Que toca hacerlo manual.
2. El bat solo sirve en tu equipo, (o bien en otro que tenga el Qt instalado en la misma dirección).
3. Igual sólo sirve en tu equipo.

Mi pregunta es si hay alguna solución a este problema de manera que se genere automáticamente el exe con los dll que usa, creo que a eso se le llama hacer un paquete pero aunque hay documentación en la página de Qt, no me ha quedado muy claro.

saludos y gracias.
  #2 (permalink)  
Antiguo 10/04/2015, 04:42
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 5 meses
Puntos: 204
Respuesta: Archivos faltantes al compilar en Qt

Siempre puedes copiar esas DLL y ponerlas en la misma carpeta que tu ejecutable (como has comentado)

o

Puedes copiar esas DLL en la carpeta system32 de Windows y estarán disponibles para todas las aplicaciones

No se si toqueteando el .pro se puede conseguir (imagino que si) que la copia de las DLL se haga de forma automática al compilar el proyecto

EDIT: Bingo. Algo así:

Código BASH:
Ver original
  1. CONFIG(debug, debug|release) {
  2.      QtCored4.commands = copy /Y %QTDIR%\\bin\\QtCored4.dll debug
  3.      QtCored4.target = debug/QtCored4.dll
  4.      QtGuid4.commands = copy /Y %QTDIR%\\bin\\QtGuid4.dll debug
  5.      QtGuid4.target = debug/QtGuid4.dll
  6.      QMAKE_EXTRA_TARGETS += QtCored4 QtGuid4
  7.      PRE_TARGETDEPS += debug/QtCored4.dll debug/QtGuid4.dll
  8.  } else:CONFIG(release, debug|release) {
  9.      QtCore4.commands = copy /Y %QTDIR%\\bin\\QtCore4.dll release
  10.      QtCore4.target = release/QtCore4.dll
  11.      QtGui4.commands = copy /Y %QTDIR%\\bin\\QtGui4.dll release
  12.      QtGui4.target = release/QtGui4.dll
  13.       QMAKE_EXTRA_TARGETS += QtCore4 QtGui4
  14.      PRE_TARGETDEPS += release/QtCore4.dll release/QtGui4.dll
  15.  } else {
  16.      error(Unknown set of dependencies.)
  17. }

Pero referenciando las DLLs correctas.

Teniendo en cuenta que las librerías de Qt en uso están especificadas en la variable QT, se podría recorrer su contenido para saber qué DLLs hay que copiar

Última edición por eferion; 10/04/2015 a las 04:49
  #3 (permalink)  
Antiguo 10/04/2015, 05:59
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Archivos faltantes al compilar en Qt

Hola eferion gracias. He buscado el archivo .pro, dentro del explorador de soluciones y no lo encuentro jeje hay un .ui, .h, .qrc,. cpp pero nada de .pro, supongo que el código que me facilitas iría dentro de ese archivo.

Saludos
  #4 (permalink)  
Antiguo 10/04/2015, 06:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Archivos faltantes al compilar en Qt

Creo que puedes hacer esto con el comando windeployqt (en windows)
__________________
Mi calculadora en Qt
  #5 (permalink)  
Antiguo 10/04/2015, 07:42
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Archivos faltantes al compilar en Qt

No encontraba el .pro pues uso el visual studio 2013 como IDE, no el QtCreator, y en vs, al parecer no se crea el .pro.



Eferion exactamente en que variable se guarda las librerías que se necesitan para hacer la copia?

Muchas gracias.
  #6 (permalink)  
Antiguo 10/04/2015, 07:56
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Archivos faltantes al compilar en Qt

Hola, dehm llevas razón se puede usar el comando windeployqt, abres la consola con el acceso directo que te crea el Qt, luego vas a la raiz de tu programa (donde esta el .exe) le das windeplyqt.exe . y listo te copia un montón de archivos y ya funciona el exe.

Este método copia mucho más archivos pues manualmente copie los 6 que necesitaba y listo. Seguramente copie una lista predeterminada de archivos para que funcione el programa.

saludos

Etiquetas: compilar, paquete
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.