visual-studio mfc windows-xp installshield

visual studio - El punto de entrada del procedimiento_except_handler4_common no se pudo ubicar en la biblioteca de vĂ­nculos dinĂ¡micos msvcrt.dll



visual-studio mfc (7)

Bienvenido al mundo de DLL infierno y análisis de dependencia de aplicaciones.

Encontré esa DLL en mi máquina Win8 en el SYSWOW64 (32 bits de la carpeta System32) con la versión 7.0.9200.16384. Si lo miro usando Dependency Walker , puedo ver que de hecho exporta la función que está buscando.

También veo en mi máquina InstallShield un módulo de fusión llamado MSVCRT.MSM que redistribuye la versión 6.00.8797.0 de este archivo. Sin embargo, cuando lo miro usando Dependency Walker, veo que tiene las funciones exportadas _except_handler2 y _except_handler_3 pero no _except_handler_4_common.

Por lo tanto, necesita una DLL más nueva y ese módulo de fusión no lo ayudará. Microsoft solía tener este excelente sitio web llamado DLL Help Database que le informaba todas las versiones de un archivo y lo que las enviaba, pero lamentablemente lo mataron.

Por cierto, también puedo ver que esta DLL está instalada con Windows en estos días. ¿Windows XP? No estoy tan seguro como tendría que encender una máquina virtual y mirar.

Un par de posibles resoluciones:

  1. Averigüe qué SP o Hotfix de Windows corrige esto y conviértalo en una dependencia de su MSI.

  2. Tome la DLL de una máquina Win 8 y agréguela a su INSTALLDIR y despliéguela de forma privada.

Una nota final. Esto es causado por la versión de Windows XP que viene con una versión anterior de la DLL (un artículo de KB relacionado dice que sí) o que una aplicación de terceros golpeó la DLL que causaba el problema. Se requieren algunos estudios más aquí.

Estoy usando "Microsoft Visual Studio" para trabajar con una "aplicación MFC".

Estoy usando "Installshield" para crear el archivo de instalación para esta aplicación.

Obtengo un archivo "setup.exe".

Si ejecuto esta configuración en una máquina con "Windows XP 32 bit", la instalación finaliza correctamente.

Sin embargo, cuando intento iniciar el programa instalado, aparece el mensaje:

"The procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll."

En el modo de depuración, no puedo encontrar el momento en que ocurre el error porque cualquiera que sea el punto de interrupción que puse en el código, el mensaje aparece antes de llegar al punto de interrupción, supongo que al principio de la ejecución del programa ...

Nota: Funciona para Vista 32 bit y Seven 64 bit.

Parece que muchas personas tienen el mismo problema pero no pude encontrar una solución para mí.

¿Puede usted ayudar? Gracias.


Su programa tiene una dependencia que no está siendo satisfecha en Windows XP. Puede intentar usar Dependency Walker para identificarlo, o puede verificar las limitaciones conocidas. Por ejemplo, Visual Studio 2012 no es compatible con Windows XP hasta que la actualización 1 y una opción de compilación cambien, ¿es eso lo que estás usando?


Este problema persiste en cualquier software o juego que requiera Windows 7 u 8 o Vista, pero se ejecuta en Windows XP. Por lo tanto, si desea reanudar o iniciar su programa, debe actualizar sus ventanas a 7 u 8 o vista según los requisitos del sistema del programa. ESPERANZA FUE AGRADECIDO GRACIAS


Pasé las últimas 8 horas seleccionando mi código con exactamente el mismo error y resultó ser una línea de código en mi aplicación, específicamente una verificación de compatibilidad con IPv6 en el sistema operativo:

conf.IPv6Disabled = !(Socket.OSSupportsIPv6);

  • Comenté que salió y voila, el error desapareció.

Le recomiendo que primero intente instalar la versión MSVC Redist 2008. Esa incluye la implementación de la función que falta.


El problema probablemente se debió a que podrías haber usado una versión de DirectX corrupta en tu Win XP. También me pasó a mí porque descargué aleatoriamente una configuración de DirectX que estaba dañada y causó esto. La solución que hice fue eliminar todos los archivos que tienen algo que ver con directX de C: Windows / System32, eliminar el directX del programa add / remove y eliminar por completo la clave de registro completa de regedit. Local_machine/software/microsoft/DirectX... Lo que hice entonces fue encontrar los valores y claves originales para DirectX 9 en la red e hice una nueva clave de registro.

La carpeta DirectX una vez fue completamente original y originalmente en regedit y mostró en dxdiag que está instalado directX.

En caso de que encuentres fallas en el juego, te sugiero que descargues .NET Framework 3.5 Service Pack 1 y luego hagas una copia de seguridad en tu PC (si no estás usando las tarjetas gráficas nVIDIA como yo, uso ATI Radeon) y las descargas Controlador de software del sistema nVIDIA PhysX y vea si funciona. (Necesitas nVIDIA phydX drivers para ejecutar este juego sin bloqueos solo si usas Win XP, el problema no debería ser encontrado en Win 7) En caso de que los controladores arruinen tu PC (el nVIDIA PhysX one) podrás restaurar tu vieja PC función antes de esos controladores (si hizo una copia de seguridad de su PC, sugiero usar Acronis Boot para copias de seguridad) significa que no tiene suerte si no puede obtener nVIDIA PhysX en su computadora, por ejemplo, gráficos ATI en Windows XP, porque sin nvidia physx, en Win XP, Metro no se ejecutará, mientras que en Win 7 / Vista / 8 debería.


Esta publicación es antigua, pero quería dejar mi solución ya que este problema era un infierno para mí. Mi aplicación python estaba funcionando para Linux, Win7, 8 y 10, pero WinXP se negó a trabajar con ese mensaje.

Estaba usando py2exe para obtener un ejecutable y pondrá algunos archivos DLL junto con el archivo exe.

La eliminación de algunos dlls del directorio del ejecutor fue lo único que hizo que la aplicación funcionara en XP y continúe trabajando en los otros sistemas:

["POWRPROF.dll", "IPHLPAPI.DLL", "USP10.DLL", "DNSAPI.DLL"]

También distribuye el directorio "Microsoft.VC90.CRT" junto con el archivo exe, con su manifiesto y archivos DLL.

Espero que esto sea útil para alguien, ya que me tomó semanas resolverlo.

(Sé que OP no funcionaba con Python, pero el error es el mismo)