2011-03-26 7 views
7

Mi programa Qt (g ++ 4.4.0) me da el error de la Biblioteca en tiempo de ejecución de Microsoft Visual C++ "Esta aplicación ha solicitado que el Runtime lo termine de una manera inusual" cuando lo cierro. Pero cuando lo ejecuto en el depurador, no aparece el mensaje de error. ¿Alguien sabe una forma de obtener información sobre el accidente? El cuadro de mensaje solo tiene un botón Aceptar."Esta aplicación ha solicitado que Runtime lo finalice de una manera inusual".

Editado para agregar: Siguiendo el consejo de Wimmel, adjunté al depurador. Hay dos hilos quedaban vivos, con ThreadID 1 y 3. Las pilas de tener este aspecto:

Level Function    File       Line Address 
0  VTagOutput   C:\Windows\syswow64\user32.dll 0 0x7529438d 
1  VTagOutput   C:\Windows\syswow64\user32.dll 0 0x7529438d 
2  USER32!EmptyClipboard C:\Windows\syswow64\user32.dll 0 0x752a2674 
3  ??             0 

Level Function         File       Line Address 
0  ntdll!LdrFindResource_U      C:\Windows\SysWOW64\ntdll.dll 0 0x76f5000d 
1  ntdll!LdrSetAppCompatDllRedirectionCallback C:\Windows\SysWOW64\ntdll.dll 0 0x76fdfabe 
2  ??                  0 0x7b9609b5 
3  ??                  0 

Tal vez el segundo hilo está mostrando el mensaje de error? El primero es un poco extraño: las dos filas superiores son idénticas. No tengo nada en mi código que tenga TagOutput en su nombre, y tampoco Qt hasta donde yo sé.

+1

Tal vez se puede conectar el depurador antes de hacer clic en OK, y ver el marco de pila de todos los hilos para ver donde viene el error. – wimh

+0

Todos los símbolos que está viendo provienen de las DLL del sistema. ¿Ha incluido información de depuración en su compilación? –

+0

@ Alan: Sí. Sospecho que el programa ya se ha ido, y este es solo el mecanismo de informe de errores del sistema. – TonyK

Respuesta

3

La única vez que he visto ese mensaje de error con Qt fue la primera vez que intenté configurar un entorno de desarrollo Qt y había instalado varias versiones diferentes de MinGW. Parecía que mi ejecutable estaba buscando y cargando una versión de mingwm10.dll que no estaba de acuerdo con todo lo demás. Busqué y eliminé todas las versiones de ese dll excepto la que yo quería y el problema desapareció.

+0

Los he cazado, y hay seis (!) De ellos, en tres versiones diferentes. ¿Cómo decidiste cuál querías? – TonyK

+0

Eso dependería pero prueba esto. Si está utilizando el Qt SDK, probablemente desee el que está incluido con el SDK. Un método que se me ocurre es copiar cada uno de los dlls que encontraste en el mismo directorio que el ejecutable y probar cada uno de ellos, uno a la vez hasta que identifiques uno que sea compatible. Si de hecho, esta es la causa. –

+0

Gracias por la sugerencia. Pero solo hay un mingwm10.dll en mi camino, y vino con Qt, así que no creo que este sea el problema. Mientras tanto, el programa ha dejado de bloquearse, después de que se realizaron algunos cambios aparentemente no relacionados. Así que está al acecho allí ... – TonyK

0

Use procmon.exe y filtro para el nombre del proceso y acceso a archivos para encontrar las dependencias faltantes.

Tuve el mismo problema con Qt 5.0.1.
Al programa le faltan algunas dlls del marco de Qt.
les encuentra en el directorio:

<QTINSTALLDIR>\Qt5.0.1\5.0.1\mingw47_32\plugins 
Cuestiones relacionadas