Editar: Algunas personas comenzaron a marcar mi pregunta como un duplicado. No olvide que existían muchas preguntas similares cuando pregunté esta (ver, 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 había sido ignorado por todos los usuarios que apuntaban a la biblioteca que faltaba. Ahora, muchos meses después, el comentario se ha cambiado a una respuesta. Sin embargo, cuando respondí esta pregunta por mí mismo, 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 proporcionado en la parte superior no resuelve el problema !
Sí, usé la búsqueda:
Error al cargar el complemento de plataforma "windows". Las plataformas disponibles son: Error
Implementación de la aplicación Qt C ++ desde el error 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 inicia directamente con Qt Creator.
Sin embargo, cuando empiezo desde la carpeta "release", recibo el siguiente mensaje:
Esta aplicación no pudo iniciarse 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 directamente copiada de Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ plataformas que incluye, por ejemplo, qwindows.dll. No importa si le cambio el nombre a "plataforma" como lo hicieron otros usuarios. Qt sigue sin encontrar las "ventanas de complementos de plataforma", ¿dónde está mi error?
fuente
Depends
, que le mostrará las dependencias de DLL y los problemas derivados de ellas. Puede usar esta herramienta para el análisis estático de un archivo exe o dll, pero también puede usarla para mostrar el inicio de una aplicación con archivos DLL cargados dinámicamente.Respuestas:
Bien, como se publicó aquí https://stackoverflow.com/a/17271172/1458552 sin mucha atención por parte de otros usuarios:
El libEGL.dll faltaba! Aunque esto no se ha informado al intentar iniciar la aplicación (se han informado todos los demás * .dlls como Qt5Gui.dll).
fuente
Creé un directorio de plataformas junto a mi ubicación de exe y puse qwindows.dll dentro, pero aún recibí el mensaje "Error al cargar el complemento de plataforma" windows ". Las plataformas disponibles son: error de windows".
Copié qwindows.dll de C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ plataformas, que no es la ubicación correcta. Miré el registro de depuración que se ejecutaba en Qt Creator y descubrí que mi aplicación estaba buscando en C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ plataformas cuando se ejecutaba en el depurador.
Cuando copié desde C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platform, todo funcionó bien.
fuente
Es probable que a la versión le falte una biblioteca / complemento o la biblioteca esté en el directorio incorrecto o desde el directorio incorrecto.
Qt respuesta prevista: Utilice windeployqt . ver el último párrafo para una explicación
Respuesta manual:
Cree una carpeta llamada "plataformas" en el mismo directorio que su archivo application.exe. Copie y pegue el qwindows.dll, que se encuentra en el / bin del compilador que utilizó para liberar su aplicación, en la carpeta "plataformas". Como magia funciona. Si el archivo .dll no está allí, verifique plugins / plataformas / (con plugins / en el mismo directorio que bin /) <- Comentario de PfunnyGuy.
Parece que un problema común es que el archivo .dll se tomó del contenedor del compilador incorrecto. Asegúrese de copiar su qwindows.dll desde el mismo compilador que el utilizado para lanzar su aplicación.
Qt viene con aplicaciones de consola de plataforma que agregarán todas las dependencias (incluidas las qwindows.dll y libEGL.dll) en la carpeta de su ejecutable implementado. Esta es la forma prevista para implementar su aplicación, de modo que no se pierda ninguna biblioteca (que es el problema principal con todas estas respuestas). La aplicación para Windows se llama windeployqt . Es probable que haya una aplicación de consola de implementación para cada sistema operativo.
fuente
Establecer la
QT_QPA_PLATFORM_PLUGIN_PATH
variable de entorno en% QTDIR% \ plugins \ plataformas \ funcionó para mí .También se mencionó aquí y aquí .
fuente
Me encontré con esto y ninguna de las respuestas que pude encontrar me lo solucionó.
Mi colega tiene Qt (5.6.0) instalado 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 Qt se instala por primera vez. Como los directorios de mi colega y Qt eran iguales, 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 \ plataformas \ qwindows.dll en lugar del que se encuentra al lado del ejecutable en la subcarpeta. \ Plataformas.
Para evitar esto, agregué la siguiente línea de código a la aplicación que parece forzarla a buscar al lado del exe la subcarpeta 'plataformas' antes de ver la ruta en Qt5Core.dll.
Agregué la línea anterior al método principal antes de la llamada QApplication de esta manera:
fuente
qwindowsd.dll
en el directorio `plataformas 'si se encuentra en una situación en la que comparte compilaciones de depuración con sus colegas ...crear directorio
platforms
y copiarloqwindows.dll
,platforms
yapp.exe
están en el mismo directoriocd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll
Estructura de carpetas
+ app.exe + platforms\qwindows.dll
fuente
qwindows.dll
en el directorioplatforms
. Publico esto porque lo he solucionado. ¿Estás haciendo una prueba antes de votar abajo?Encontré otra solución. Cree qt.conf en la carpeta de la aplicación como tal:
Y luego copie la carpeta de complementos en la carpeta de la aplicación y me funciona.
fuente
La mayoría de estas respuestas contienen buena información (correcta), pero en mi caso, todavía faltaba algo.
Mi aplicación está construida como una biblioteca (dll) y es llamada por una aplicación que no es Qt. Solía
windeployqt.exe
configurar Qt dlls, plataformas, complementos, etc. en el directorio de instalación, pero todavía no podía encontrar la plataforma. Después de experimentar un poco, me di cuenta de que el directorio de trabajo de la aplicación estaba configurado en una carpeta diferente. Entonces, tomé el directorio en el que el dll "vivía" usandoGetModuleHandleExA
y agregué ese directorio a la ruta de la biblioteca Qt en tiempo de ejecución usandoEsto funcionó para mí.
fuente
Para mí, la solución fue corregir la
PATH
variable. Tenía Anaconda3 \ Library \ bin como uno de los primeros caminos. Este directorio contiene algunas bibliotecas Qt, pero no todas. Aparentemente, eso es un problema. Mover C: \ Programas \ Qt \ 5.12.3 \ msvc2017_64 \ bin al frente dePATH
resolvió el problema para mí.fuente
Tuve este problema al usar QT 5.6, Anaconda 4.3.23, python 3.5.2 y pyinstaller 3.3. Había creado un programa python con una interfaz desarrollada usando QTcreator, pero tuve que implementarlo en otras computadoras, por lo tanto, necesitaba hacer un ejecutable, usando pyinstaller.
Descubrí que el problema se resolvió en mi computadora si configuro las siguientes variables de entorno:
Pero esta solución solo funcionó en mi PC que tenía instalado conda y qt en esas carpetas.
Para resolver esto y hacer que el ejecutable funcione en cualquier computadora, tuve que editar el ".spec" (archivo generado por primera vez por pyinstaller) para incluir la siguiente línea:
Esta solución se basa en las respuestas de Jim G. y CrippledTable.
fuente
Tuve el mismo problema y lo resolví 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 de "plataformas" se 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 NVIDIA .dll y le indicará la ubicación.
Otra forma, en lugar de usar "Dependency Walker", es copiar todo el archivo .dll de su carpeta "C: \ Windows \ System32" al lado de su archivo ejecutable. Ejecute su .exe y si todo se carga bien, por lo que no tiene espacio ocupado en las bibliotecas de dll que no necesita o usa, use el programa .exe con todas sus opciones y sin cerrar el .exe que hace es borrar todo. dll que acaba de copiar al lado del .exe, por lo que si su .dll está siendo utilizado por su programa, el sistema no le permitirá borrar, solo eliminará aquellos que no sean necesarios.
Espero que esta solución te sirva.
Recuerde que si su sistema operativo tiene 64 bits, las bibliotecas estarán en la carpeta System32, y si su sistema operativo tiene 32 bits, también estarán en la carpeta System32. Esto sucede para que no haya problemas de compatibilidad con programas de 32 bits en una computadora de 64 bits. La carpeta SysWOW64 contiene los archivos de 32 bits como copia de seguridad.
fuente
Para una plataforma MinGW y si está compilando un objetivo de depuración mediante un CMakeLists.txt hecho a mano escrito 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 qwindows.dll y qwindowsd.dll en el directorio de su 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 comando, el proyecto CMake parece desencadenar la dependencia qwindows.dll, ya sea si se establece el correcto para el objetivo de depuración (qwindowsd.dll)
fuente
Utilice este archivo por lotes: RunWithQt.bat
RunWithQt gui.exe
desde la línea de comandofuente
Si tiene instalado Anaconda, le recomiendo que lo desinstale e intente instalar el paquete python desde la fuente, solucioné este problema de esta manera
fuente
La aplicación qtbase / bin / windeployqt.exe implementa automáticamente su aplicación. Si inicia una solicitud con las variables de entorno configuradas correctamente, se implementa en el directorio actual. Usted encuentra un ejemplo de script:
fuente
Digamos que querías tener algunos CGAL-Demos portátiles. Entonces tendría una carpeta "CGAL", y en ella, 1 subcarpeta llamada "lib": todos los dlls de soporte (comunes) para cualquier programa en la carpeta CGAL van aquí. En nuestro ejemplo, esta sería la descarga Dll : simplemente descomprímalo en el directorio "lib". Cuanto más se desplace hacia abajo en la página de demostración , más impresionante será el contenido. En mi caso, la demostración del poliedro parecía correcta. Si esto funciona en mi portátil de más de 10 años, estoy impresionado. Así que creé una carpeta "demo" en el directorio "CGAL", junto a "lib". Ahora cree un archivo .cmd en esa carpeta. Llamé al mío "Polyhedron.cmd". Entonces tenemos una estructura de directorios como esta:
En este pequeño ejemplo, "Polyhedron.cmd" contiene el siguiente texto:
Todos los scripts pueden ser iguales, aparte de la última línea, obviamente. La única advertencia es: la "Ventana de DOS" permanece abierta mientras use el programa real. Cierre la ventana de shell y también eliminará el * .exe. Donde sea que copie la carpeta "CGAL", ya que el extraño "% ~ dp0" -wriggle representa la ruta completa al archivo * .cmd que comenzamos, con el final "\". Entonces "% me% lib" es siempre la ruta completa a la biblioteca real ("CGAL \ lib" en mi caso). Las siguientes 2 líneas le dicen a Qt dónde están sus archivos de "tiempo de ejecución". Este será al menos el archivo "qwindows.dll" para los programas Windows-Qt más cualquier número de * .dlls. Si no recuerdo mal, la biblioteca Dll (al menos cuando la descargué) tenía un pequeño "error" ya que contiene el directorio "plataformas" con qwindows.dll.pasar a "complementos". Si una aplicación Qt, cualquier aplicación Qt, no encuentra "qwindows.dll", no puede encontrar "windows". Y lo espera en un directorio llamado "plataformas" en el directorio "complementos", que el sistema operativo debe informarle que se está ejecutando ... y si "QT_PLUGIN_PATH" no apunta exactamente a todos los helper-dlls que es necesario, algunos programas Qt seguirán ejecutándose sin problemas. Y algunos se quejan de la falta de * .dlls que nunca escuchaste ...
fuente
Para cualquiera que venga de QT versión 5.14.0, me tomó 2 días encontrar esta declaración de error:
https://wiki.qt.io/Qt_5.14.0_Known_Issues
Así que ten cuidado. El uso de windeployqt con MinGW dará el mismo error que se indica aquí.
fuente