instalar - qt para c++
Qt 5.1.1: la aplicaciĆ³n no se pudo iniciar porque falta la "ventana" del complemento de la plataforma (13)
Creé un directorio de plataformas junto a mi ubicación de exe y puse qwindows.dll dentro, pero aún recibí la ventana "Error al cargar el plugin de la plataforma". Las plataformas disponibles son: error de Windows.
Copié qwindows.dll desde C: / Qt / Qt5.1.1 / Tools / QtCreator / bin / plugins / platforms, que no es la ubicación correcta. Miré el registro de depuración que se ejecuta en Qt Creator y encontré que mi aplicación estaba buscando en C: / Qt / Qt5.1.1 / 5.1.1 / mingw48_32 / plugins / platforms cuando se ejecutó en el depurador.
Cuando copié de C: / Qt / Qt5.1.1 / 5.1.1 / mingw48_32 / plugins / platforms, todo funcionó bien.
Editar: Algunas personas comenzaron a marcar mi pregunta como un duplicado. No olvide que existían muchas preguntas similares cuando le pregunté a esta (consulte, por ejemplo, la lista a continuación). Sin embargo, ninguna de estas respuestas resolvió mi problema . Después de una larga búsqueda, encontré un comentario que todos los usuarios habían ignorado y que señalaba la lib que faltaba. Ahora, muchos meses después, el comentario ha cambiado a una respuesta. Sin embargo, cuando respondí esta pregunta por msyself, tenía la intención de ayudar a otras personas proporcionando directamente la solución. Esto no debe olvidarse y hasta ahora mi respuesta ayudó a mucha gente. Por lo tanto, mi pregunta definitivamente no es un duplicado. Por cierto: ¡la respuesta aceptada dentro del enlace provisto en la parte superior no resuelve el problema !
Sí, utilicé la búsqueda:
Error al cargar las ventanas del plugin de la plataforma. Las plataformas disponibles son: Error
Despliegue de la aplicación Qt C ++ desde el error de Visual Studio qwindows.dll
Sin embargo, en mi caso el problema aún persiste. Estoy usando Qt 5.1.1 con Visual Studio 2012 y desarrollé mi aplicación en Windows 7 con Qt Creator 2.8.1. La aplicación se compila en el modo "Release" y se puede ejecutar si se inició directamente con Qt Creator.
Sin embargo, cuando empiezo desde la "publicación" -Folder, recibo el siguiente mensaje:
Esta aplicación no se pudo iniciar porque no pudo encontrar o cargar el complemento de la plataforma Qt "windows". Los complementos de plataforma disponibles son: mínimo, fuera de pantalla, ventanas.
La estructura de la carpeta se ve así:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Plataformas es la carpeta copiada directamente de Qt / Qt5.1.1 / 5.1.1 / msvc2012 / plugins / platforms incluyendo eg qwindows.dll. No importa si cambio el nombre a "plataforma" como lo hicieron otros usuarios. Qt aún no encuentra las "ventanas de plugin de plataforma", ¿dónde está mi error?
De acuerdo, tal como se publicó aquí https://.com/a/17271172/1458552 sin mucha atención de otros usuarios:
¡ Faltaba libEGL.dll ! Aunque esto no se informó al intentar iniciar la aplicación (todos los demás * .dlls como Qt5Gui.dll habían sido informados).
Encontré otra solución. Crea qt.conf en la carpeta de la aplicación como tal:
[Paths]
Prefix = .
Y luego copie la carpeta de complementos en la carpeta de la aplicación y funciona para mí.
Encontré una solución inesperada pero intuitiva. Si copia y pega el archivo qwindows.dll, que se encuentra en el contenedor de cualquier compilador que utilizó para liberar su aplicación, en una carpeta llamada "plataformas", puede mover esa carpeta al mismo directorio que su aplicación y, como magia, funciona.
También otro consejo útil, Qt viene con aplicaciones de consola de plataforma que agregarán todas las dependencias (incluidas las tales como qwindows.dll y libEGL.dll) en la carpeta del ejecutable desplegado. La aplicación para Windows se llama windeployqt y la documentación se puede encontrar aquí http://doc.qt.io/qt-5/windows-deployment.html . Esta aplicación me ahorró mucho tiempo y es realmente la forma correcta de desplegar tu ejecutable, para no perderte nada.
Establecer la variable de entorno QT_QPA_PLATFORM_PLUGIN_PATH
en% QTDIR% / plugins / platforms / funcionó para mí .
También fue mencionado here y here .
La mayoría de estas respuestas contienen información buena (correcta), pero en mi caso, todavía faltaba algo.
Mi aplicación está construida como una biblioteca (dll) y llamada por una aplicación que no es Qt. windeployqt.exe
para configurar Qt dlls, plataformas, complementos, etc. en el directorio de instalación, pero aún no pude encontrar la plataforma. Después de algunos experimentos, me di cuenta de que el directorio de trabajo de la aplicación estaba configurado en una carpeta diferente. Así que agarré el directorio en el que el dll "vivía" usando GetModuleHandleExA
y agregué ese directorio a la ruta de la biblioteca Qt en tiempo de ejecución usando
QCoreApplication::addLibraryPath(<result of GetModuleHandleExA>);
Esto funcionó para mí.
Me encontré con esto y ninguna de las respuestas que pude encontrar me lo solucionó.
Mi colega tiene instalado Qt (5.6.0) en su máquina en: C: / Qt / Qt5.6.0 / 5.6 / msvc2015 / plugins
Tengo Qt (5.6.2) instalado en la misma ubicación.
Aprendí de esta publicación: http://www.tripleboot.org/?p=536 , que Qt5Core.dll tiene una ubicación para los complementos escritos cuando se instala Qt por primera vez. Como los directorios de mi colega y de mi Qt eran los mismos, pero se instalaron versiones diferentes de Qt, se necesita un archivo qwindows.dll diferente. Cuando ejecuté un exe implementado por él, usaría mi archivo C: / Qt / Qt5.6.0 / 5.6 / msvc2015 / plugins / platforms / qwindows.dll en lugar del que se encuentra junto al ejecutable en la subcarpeta /.
Para evitar esto, agregué la siguiente línea de código a la aplicación que parece obligarlo a mirar junto al exe para la subcarpeta ''plataformas'' antes de que vea la ruta en Qt5Core.dll.
QCoreApplication::addLibraryPath(".");
Agregué la línea anterior al método principal antes de la llamada QApplication como esta:
int main( int argc, char *argv[] )
{
QCoreApplication::addLibraryPath(".");
QApplication app( argc, argv );
...
return app.exec();
}
Para una plataforma MinGW y si está compilando un objetivo de depuración mediante un CMakeLists.txt escrito a mano ad hoc, también debe agregar qwindows.dll al directorio de la plataforma. El ejecutable windeployqt funciona bien, pero parece que por alguna extraña razón la construcción CMake también necesita la variante de lanzamiento. En resumen, será mejor tener tanto qwindows.dll como qwindowsd.dll en su directorio de plataforma. No noté el mismo resultado extraño al importar el proyecto CMake en QtCreator y luego ejecutar el procedimiento de compilación. Al compilar en la línea de comandos, el proyecto CMake parece desencadenar la dependencia de qwindows.dll si se establece el correcto para el objetivo Debug (qwindowsd.dll)
Si tiene Anaconda instalado, le recomiendo que lo desinstale e intente instalar el paquete de Python desde la fuente. Solucioné este problema de esta manera.
Tuve el mismo problema y lo solucioné aplicando varias cosas. El primero, si es un programa que hiciste con Qt.
En la carpeta (en mi caso) de "C: / Qt / Qt5.10.0 / 5.10.0 / msvc2017_64 / plugins" encontrará otras carpetas, una de ellas es "plataformas". Esa carpeta "plataformas" se va a copiar junto a su ejecutable .exe. Ahora, si obtiene el error 0xc000007d es que no copió la versión que era, ya que puede ser de 32 bits o 64.
Si continúa con los errores es que le faltan más bibliotecas. Con el programa "Dependency Walker" puede detectar algunas de las carpetas que faltan. Seguramente le indicará que necesita un .dll de NVIDIA, y le indica la ubicación.
Otra forma, en lugar de usar "Dependency Walker" es copiar todo el .dll de su carpeta "C: / Windows / System32" al lado de su archivo ejecutable. Ejecute su .exe y si todo se carga bien, para que no tenga espacio ocupado en las librerías dll que no necesita o no usa, use el programa .exe con todas sus opciones y sin cerrar el .exe que usted hace es borrar todo. Dll que acaba de copiar al lado del archivo .exe, por lo tanto, si el programa usa esos .dll, el sistema no le permitirá borrarlos, solo eliminará aquellos que no sean necesarios.
Espero que esta solución te sirva.
Recuerde que si su sistema operativo es de 64 bits, las bibliotecas estarán en la carpeta System32, y si su sistema operativo es de 32 bits, también estarán en la carpeta System32. Esto sucede para que no haya problemas de compatibilidad con los programas que son 32 bits en una computadora de 64 bits. La carpeta SysWOW64 contiene los archivos de 32 bits como copia de seguridad.
Tuve este problema al usar QT 5.6, Anaconda 4.3.23, Python 3.5.2 y el instalador 3.3. Creé un programa python con una interfaz desarrollada usando QTcreator, pero tuve que implementarlo en otras computadoras, por lo tanto, necesitaba crear un ejecutable usando el instalador de Python.
Descubrí que el problema se resolvió en mi computadora si establecía las siguientes variables de entorno:
QT_QPA_PLATFORM_PLUGIN_PATH:% QTDIR% / plugins / platforms /
QTDIR: C: / Miniconda3 / pkgs / qt-5.6.2-vc14_3 / Library
Pero esta solución solo funcionó en mi PC que tenía conda y qt instalados en esas carpetas.
Para resolver esto y hacer que el ejecutable funcione en cualquier computadora, tuve que editar el ".spec" (archivo primero generado por el instalador) para incluir la siguiente línea:
datas = [(''C: / Miniconda3 / pkgs / qt-5.6.2-vc14_3 / Library / plugins / platforms * .dll'', ''plataformas''),]
Esta solución se basa en las respuestas de Jim G. y CrippledTable
Utilice este archivo por lotes: RunWithQt.bat
@echo off
set QTDIR=C:/Qt/Qt5.1.1/5.1.1/msvc2012/bin
set QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%/plugins/platforms/
start %1
- para usarlo, arrastre su archivo gui.exe y suéltelo en RunWithQt.bat en el explorador,
- o llame a
RunWithQt gui.exe
desde la línea de comando
crear platforms
dir y copiar qwindows.dll
, las platforms
y app.exe
están en el mismo directorio
cd app_dir mkdir platforms xcopy qwindows.dll platforms/qwindows.dll
Estructura de la carpeta + app.exe + platforms/qwindows.dll