visual studio microsoft español descargar community c++ c visual-studio visual-c++

microsoft - Visual C++/Studio: ¿configuración de la aplicación incorrecta?



visual studio installer (10)

Mi programa C (++), escrito y compilado usando Visual C (++) / Visual Studio, funciona bien en mi propia máquina, pero se niega a ejecutarse en otra máquina. El mensaje de error que recibo es "Esta aplicación no se pudo iniciar porque la configuración de la aplicación es incorrecta. Reinstalar la aplicación puede solucionar este problema".


El problema aquí es una dependencia DLL faltante, como el CRT (C Runtime Library). Una buena herramienta para diagnosticar este tipo de problema es Dependency Walker (depends.exe), que puede encontrar aquí:

http://www.dependencywalker.com/

Ejecutaría este programa en la computadora que genera el mensaje de error que publicó, y lo usa para abrir el exe que está generando este error. Dependencia Walker indicará rápida y gráficamente cualquier archivo DLL que se requiera pero que no esté disponible en la máquina.


Es mucho más simple vincular estáticamente el tiempo de ejecución.

c ++ -> Generación de código -> Biblioteca de tiempo de ejecución y seleccione "multi-threaded / MT"

Sin embargo, esto hace que tu ejecutable sea un par de cientos KByte más grande. Esto podría ser un problema si está instalando una gran cantidad de pequeños programas, ya que cada uno de ellos estará cargado con su propia copia del tiempo de ejecución. La respuesta es crear un instalador.

Nuevo proyecto -> "configuración e implementación" -> "proyecto de configuración"

Cargue la salida de los proyectos de su aplicación (definidos mediante la versión DLL del tiempo de ejecución) en el proyecto del instalador y compárelo. Se notará la dependencia de la DLL de tiempo de ejecución, incluida en el paquete del instalador, y se instalará ordenada y discretamente en el lugar correcto en la máquina de destino.


Hay muchas posibilidades de que extrañe las bibliotecas de tiempo de ejecución de Visual Studio (CRT, entre otras); puede deshacerse de esas dependencias (vincular estáticamente) o instalar los paquetes de redistribución de VC en la computadora de destino.

Dependiendo de la versión de Visual C ++ que use, debe instalar diferentes paquetes:

Visual C ++ 2005

Visual C ++ 2005 SP1

Visual C ++ 2008

Advertencia : esos paquetes solo contienen versiones de lanzamiento de las bibliotecas, si desea poder distribuir compilaciones de depuración de su aplicación, tendrá que encargarse usted mismo de la DLL requerida.


Muchas veces este error es el resultado de intentar ejecutar la versión de depuración de una aplicación que usa .NET. Dado que el paquete redistribuible de .NET no incluye las versiones de depuración de los dlls que se instalan con Visual Studio, la aplicación a menudo obtendrá este error al ejecutarlo en cualquier otra máquina que no tenga instalado Visual Studio. Si aún no lo ha hecho, intente crear una versión de lanzamiento de su aplicación y vea si eso funciona.


Si escribe un programa en C ++, se vincula dinámicamente a la Biblioteca en tiempo de ejecución de C, o CRT para abreviar. Esta biblioteca contiene su printf, su malloc, su strtok, etcétera. La biblioteca está contenida en el archivo llamado MSVCR80.DLL. Este archivo no está instalado por defecto en un sistema Windows, por lo tanto, la aplicación no se puede ejecutar.

¿La solución? Instale el archivo DLL en el equipo de destino a través de VCREDIST.EXE (el paquete redistribuible de Visual C ++), o enlace al CRT estáticamente (conecte el código real para las funciones utilizadas directamente en su EXE).

Distribuir e instalar VCREDIST junto con una aplicación simple es un dolor en el culo, así que fui por la segunda opción: enlace estático. Es realmente fácil: vaya a las propiedades de su proyecto, despliegue C / C ++, haga clic en Generación de código y configure la Biblioteca de tiempo de ejecución en una de las opciones que no son DLL. Eso es todo al respecto.


El paquete correcto de VC Redist para usted es parte de su instalación de Visual Studio. Para VC 8, puedes encontrarlo aquí:

/Program Files/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/vcredist_x86


Tenga en cuenta también que si cambia al tiempo de ejecución estático, tendrá que hacer lo mismo para MFC si su aplicación usa MFC. Esos ajustes están en propiedades-> Configuración / General


SOLUCIÓN POSIBLE........

EDITAR: (eliminé la mayor parte de mi publicación) En pocas palabras, estaba teniendo problemas similares, obtenía los mensajes "Configuración de la aplicación incorrecta", etc. Depends.exe solo encontraba posibles problemas con ieshims.dll y wer.dll, pero esto no es el problema Terminé usando la opción de compilación multiproceso (/ mt). Sin embargo, lo que HA funcionado, como solución viable, es crear un instalador con InstallShield. Seleccioné varios módulos de combinación en el constructor de instalación de Installshield y esto parece haber solucionado mi problema. Los módulos seleccionados fueron: VC ++ 9.0 CRT, VC ++ 9.0 DEBUG CRT y el módulo de fusión CRT WinSXS MSM. Estoy bastante seguro de que es el módulo de fusión de WinSXS que lo ha solucionado.

DEBUG CRT: Me di cuenta de que (sin importar lo mucho que lo intenté, y obviamente fallaba hasta el momento), mi versión de lanzamiento todavía dependía de DEBUG CRT. Si este sigue siendo el caso, el módulo de fusión InstallShield ahora ha colocado la carpeta DEBUG CRT en mi carpeta WinSXS :) Siendo algo así como un novato con VC ++ supongo que esto normalmente se usaría para distribuir versiones de depuración de sus programas a otras personas. Para probar si esto es lo que solucionó mi problema, eliminé la carpeta DEBUG CRT de la carpeta WinSXS y la aplicación aún funcionaba. (A menos que algo todavía se esté ejecutando en el fondo, etc. etc., no estoy tan metido en eso)

De todos modos, esto me ha funcionado en una máquina XP SP3 totalmente actualizada, y también en una máquina VMWare XP SP3 con los huesos (.net 3.5 y VC ++ 2008 RTM básicamente) - y también en la máquina XP de un compañero donde anteriormente no estaba funcionando.

Así que prueba estas cosas, podrías tener algo de suerte.


Me encontré con este problema y pude solucionarlo de manera muy simple.

Visual Studio le brinda la opción (activada de forma predeterminada) para compilar un manifiesto para cada compilación.

El manifiesto se puso en la carpeta de lanzamiento, pero era una carpeta de lanzamiento diferente que el ejecutable.

Incluso cuando usaba las utilidades de configuración, no estaba empaquetado.

Debería buscar un nombre de archivo como myprogram.exe.indermediate.manifest

Si está en la misma carpeta que el exe (y tiene todos los dlls) debería ejecutarse