2009-12-22 21 views
17

Estoy tratando de implementar mi proyecto simple de Qt como un mundo de saludo.¿Cómo implementar mi aplicación usando Qt-Creator?

Lo compilo con éxito y también puedo ejecutarlo en Qt-Creator. Sin embargo, no puedo ejecutar el binario directamente en la carpeta de lanzamiento debido a algunos errores compartidos de la biblioteca.

Así que solo copio algunas librerías esenciales a la carpeta de lanzamiento como qtcore.dll y qtgui.dll, pero aún no puedo ejecutarlo.

¿Cómo puedo implementar mi proyecto simple de Qt? ¿Hay algún otro paso para implementarlo?

+0

¿cuál es el mensaje de error? –

+0

El mensaje de error es que el punto de inicio del procedimiento no se encuentra en el QtCore4.dll. Este mensaje de error puede no ser exactamente porque yo lo traduje al inglés. – Brian

Respuesta

19

También necesita implementar la DLL de tiempo de ejecución Mingw (mingwm10.dll). Este archivo se encuentra en su directorio Qt\2009.5\mingw\bin.

También preste atención a si su aplicación está compilada en modo de depuración o en modo de lanzamiento. Acabo de hacer la prueba con una aplicación tipo hello world y Qt Creator. En las carpetas debug, copié libgcc_s_dw2-1.dll, mingwm10.dll, QtCored4.dll y QtGuid4.dll y funciona.

Tenga en cuenta el d en los nombres de DLL, que es sinónimo de depuración: QtCored4.dll.

Ver Qt 4.6: Deploying an Application in Windows. para Qt 5, compruebe this page.

+0

Copié ese archivo y libgcc_s_dw2-1.dll, pero se produjo el siguiente mensaje de error. El punto de inicio del procedimiento no se encuentra en QtCore4.dll.Este mensaje de error puede no ser exactamente porque está traducido al inglés por mí – Brian

+0

@brian> ¿Qué versión de Qt está usando, es esta la versión LGPL? ¿Prestaste atención a las versiones de depuración y liberación de las bibliotecas de Qt? –

+0

Gracias. Resolví este problema. Falló porque utilicé qtcore.dll y qtgui.dll ubicados en el directorio Qt \ 2009.5 \ bin. Cuando utilicé esos archivos ubicados en el directorio Qt \ 2009.5 \ qt \ bin, funciona bien. – Brian

1

Intenta ejecutar el caminante de dependencias en él (http://dependencywalker.com/) para ver qué dlls faltan?

Generalmente, no necesitará mover esas bibliotecas de Qt a su carpeta local ya que la instalación de Qt debería haber agregado esas bibliotecas a su ruta.

Una posibilidad es que usted construyó depurar y las DLL de depuración de Qt se nombran de manera diferente

11

Si no quiere tener dependencias con dlls qt/MinGW debe compilar qt estáticamente como explican aquí: http://qt.nokia.com/doc/4.6/deployment-windows.html#static-linking.

+4

Esto supone que tiene la licencia para hacerlo. El enlace estático requiere la licencia comercial. – drowe

+3

@Drowe: no tiene que comprar una licencia comercial, solo tiene que liberar el código fuente bajo la licencia LGPL/GPL. – Seba

+1

@Seba - correcto, buen punto. Una (posiblemente) suposición incorrecta de mi parte. – drowe

2

También puede utilizar la vinculación estática, sólo tiene que añadir esta línea en el archivo .pro:

QMAKE_LFLAGS += -static-libgcc

he encontrado la solución here y probado con éxito en WinXP con Qt Creator 2.2.0

-6

copie todos los qt dlls a su directorio de Windows directamente "C: \ Windows \" y no habrá qt dll error 100% funcional y simple nb: no cree una carpeta qt dll en su su directorio de Windows los publica como están

+1

Esta es una mala idea ... Nunca basura las ventanas y nunca use este método al implementar una aplicación. Tómese el tiempo para ver qué archivos necesarios se necesitan y desplegarlos con su aplicación. Mientras que la pregunta/respuesta anterior es mejor. Aconsejar a las personas que esto NO es una buena idea – Mayhem

+0

Esta es una mala práctica. Como se mencionó, busque los dlls necesarios y agréguelos en consecuencia durante el despliegue. –

Cuestiones relacionadas