19/10/2007 13:32 Augusto Ruiz

Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Hola a todos!

Como ya he comentado en otra ocasión, estoy usando el Visual C++ 2005 Express para desarrollar un jueguecillo con OpenGL y SDL. Cuando empecé, lo estaba desarrollando con el Visual C++ 2003, pero me comentaron que la STL había mejorado en la versión 2005, y como había una versión gratuita, decidí actualizarme.

El caso es que el otro día decidí liberar una alpha para los betatesters. Y de repente algunos (no todos) me comentaron que no funcionaba. Que les daba el siguiente error:

No se pudo iniciar la aplicacion porque su configuracion es incorrecta. Reinstalar la aplicacion puede solucionar el problema.

Hmmm... Al principio pensé que debía haber algún problema con mi código. Así que empece a meter trazas y pedir logs. Tras comentarme los betatesters que no había ningún log, me di cuenta de que la aplicación, como dice el error claramente, no llegaba a iniciarse. ^_^U

Entonces me di cuenta de un pequeño detalle. El runtime de C de esta versión de C++ probablemente no lo tenían todos los usuarios. Googleando un poco, ví que los betatesters se podían instalar el paquete de distribución del runtime de C++... Pero me pareció que iba a ser un rollo para ellos tener que andar instalando nada para probar una alpha.

¿Qué hago? Si no quiero que se instalen el paquete de distribución, tampoco me voy a poner a generar un msi con la alpha del juego. Habría sido la mejor solución, pero generalmente la gente prefiere descomprimir el archivo, y ejecutar directamente, sobre todo cuando algo es no definitivo...

Finalmente, encontré la solución en los foros de microsoft. La traduzco a continuación:

1) En la máquina en la que tienes instalado Visual C++ Express, crea la siguiente carpeta y subcarpetas colgando de %PROGRAMFILES%\Microsoft Visual Studio 8\VC

redist\x86\Microsoft.VC80.CRT

2) Copia msvcr80.dll, msvcp80.dll, msvcm80.dll de:

%WINDIR%\winsxs\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd

a:

%PROGRAMFILES%\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT

3) En la carpeta Microsoft.VC80.CRT, crea un nuevo fichero llamado:

Microsoft.VC80.CRT.manifest

4) Dicho fichero deberá tener el siguiente contenido:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <noInheritable/>
  <assemblyIdentity
      type="win32"
      name="Microsoft.VC80.CRT"
      version="8.0.50608.0"
      processorArchitecture="x86"
      publicKeyToken="1fc8b3b9a1e18e3b"
    />
  <file name="msvcr80.dll"/>
  <file name="msvcp80.dll"/>
  <file name="msvcm80.dll"/>
</assembly>

Con esto hemos creado un nuevo directorio en tu instalación de Visual C++ Express que puede ser reutilizado siempre que lo necesites.

Para distribuir estos ficheros, simplemente copia la carpeta Microsoft.VC80.CRT en la carpeta de tu programa. Y eso es todo. Así que, por ejemplo, si el ejecutable de tu aplicación está en la ruta:

%PROGRAMFILES%\MiAplicación

tendrás una carpeta llamada:

%PROGRAMFILES%\MiAplicación\Microsoft.VC80.CRT

que contendrá los cuatro ficheros mencionados anteriormente (3 DLLs, y el manifiesto que has creado a mano).

No hace falta instalar nada más. Simplemente arranca tu aplicación, y se ejecutará sin problemas. No hace falta ninguna instalación específica. Simplemente basta con que tu programa de instalación cree esa subcarpeta junto con el resto de archivos que tenga tu aplicación.

NOTA:

%WINDIR% es el directorio en el que está instalado Windows. Es una variable que se puede utilizar en el cmd.exe. Normalmente es C:\WINDOWS

%PROGRAMFILES% es similar, salvo que apunta a la carpeta Archivos de Programa. Lo bueno es que es independiente de idioma.

Saludos!

Archivado en: ,
Comparte este post:

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, October 19, 2007 3:49 PM by Diego

¡Gracias!

Muy interesante, y la verdad muy útil, que no sería la primera vez que alguien el día de la "demo" en ese equipo le salta ese error.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, October 19, 2007 5:14 PM by Rafael Ontivero

En la Express no sé si estará, pero en las de pago hay una carpeta en C:\Program Files\Microsoft Visual Studio 8\VC\redist que contiene las DLL necesarias.

Lo primero es que la licencia no te permite distribuir las bibliotecas DEBUG (que están en la carpeta Debug_NonRedist), por lo que el primer paso es hacer una build Release.

Luego, tan solo tienes que soltar los ficheros que hay en C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT junto a tu aplicación y listo.

Y lo mismo en el caso de una compilación debug (C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT), pero no está permitido por MS, aunque hacerse se puede hacer.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, October 19, 2007 6:06 PM by Augusto Ruiz

Hola Rafael,

Completamente cierto, en la versión de pago está esa estructura creada. Pero aún así puede haber alguien que no sepa para qué sirve ;)

El problema aparece en Visual C++ 2005 Express, porque dicha carpeta no existe (cosa que no entiendo, porque te la puedes crear en un pispás). De ahí que la solución pase por primero crearte esa carpeta redist, que sigue la misma estructura que la que tiene en la versión de pago.

En la versión de pago también tienes otras carpetas con las DLL necesarias para MFC, y otras historias...

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Sunday, October 28, 2007 12:34 AM by trumile

Hola soy novata muy novata en esto de visual c++ y necesito una pequeña colaboracion, no se donde se programa en el .cpp o en el .h, nunca he programado .NET y necesito un pequeño tutorial o algo les agradeceria.

otra cosa que pena el fichero al que te refieres es un pequeño codigo?

Gracias por su ayuda

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Monday, October 29, 2007 10:39 AM by Augusto Ruiz

Hola trumile,

En tu caso no es un tema de .NET, sino más bien de C++. En un resumen rápido e incompleto, en el fichero .h deberás poner la declaración de las clases, y en el .cpp la implementación de los métodos.

Echa un vistazo aquí:

www.cplusplus.com/.../tutorial

Es un tutorial de C++... Una vez tengas las bases, ya podrás empezar a aprender cómo usar C++ para utilizar el framework de .NET. Pero las bases de C++ son imprescindibles, me temo.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Wednesday, October 31, 2007 6:01 PM by trumile

mi pregunta es donde voy a copiar la serie de instrucciones descritas en el manifest gracias y perdonen la ignorancia

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, November 02, 2007 9:58 AM by Augusto Ruiz

Hola,

Lo primero, no pidas perdón. No hay preguntas tontas, sino respuestas tontas. ;)

Lo que debes hacer es crear un nuevo fichero de texto, lo abres con el notepad, pegas el texto que aparece arriba en colorines, lo guardas, y lo renombras, poniéndole como nombre:

Microsoft.VC80.CRT.manifest

Ojo, asegúrate de que no te pone una extensión .txt al final, y si se la pone, se la quitas. El icono del fichero debería cambiar.

Este fichero recién creado, lo copias a la carpeta que se indica en el artículo junto con las DLLs. Y cuando quieras distribuir la aplicación (no una versión final, sino una alpha) copias la carpeta que has creado (con sus DLLs y el fichero .manifest):

%PROGRAMFILES%\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT

A la carpeta de tu aplicación que vas a distribuir. (Por ejemplo en un zip).

Eso sí, si tu aplicación la vas a distribuir siendo una versión final, conviene que pongas como prerequisito que estén instaladas esas DLL, y distribuyes también el paquete de instalación del runtime de C++.

Saludos,

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Tuesday, November 27, 2007 2:06 AM by trumile

Gracias por tu ayuda me ha sido de gran utilidad cualquier inconveniente o aporte les estoy comunicando

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Monday, December 17, 2007 5:17 AM by Daniel

Hola soy nuevo con Visual C++ 2005 Express

Intente compilar este codigo, pero me da error cuando presiono F5

Este es el codigo:

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

 cout << "Hello World!";

 return 0;

}

Me dice lo siguiente "There were build erros.would you like to continue... ?"

Me pueden enviar un codigo que funcione o sino cual es la solucion?

Gracias!

P.D. Cualquier cosa mi correo es "dams540@gmail.com"

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, January 04, 2008 7:23 PM by LhaN

Tengo un problema similar a este pero no se si es el mismo... deberia serlo, lo comento.

Tengo el Visual Studio 2008, hice una aplicacion usando las librerias de SDL, y me funciono sin problemas, se lo pase a una compañera de la facultad que tiene el Visual Studio 2005, le explique como instalar las SDL y crear el proyecto desde 0, lo compilo, pero cuando lo fue a ejecutar le dio el error que aqui mencionan, luego le mande el que yo habia compilado y lo mismo le daba el error. Aqui hablan solo de las version express del 2005, pero puede estar ocurriendo esto tambien con las de pago??? Ademas mencionan que el problema ocurre en equipos sin el Visual C++ express, y ella tiene instalado el visual studio 2005... es el mismo problema? o es un problema similar? Gracias desde ya.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Sunday, January 06, 2008 7:31 AM by Daniel

Muchas Gracias LhaN

El codigo que me enviaste funciono!!

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Wednesday, January 23, 2008 1:22 AM by Sergio

Muy interesante compañero!!

Por casualidad sabes si hay alguna manera de resolver el msimo problema de ejecutar un codigo .net en otra maquina pero para Visaul Basic .Net 2008??

Muchas gracias,

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Sunday, February 03, 2008 11:59 PM by Augusto Ruiz

Sí...

Instalar el framework de .NET, la versión que corresponda a tu aplicación ;)

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Monday, March 03, 2008 7:10 PM by Chema

Hola, estoy tratando de compilar el Turbo Girl en MSVC2005 y me he encontrado con este follón del runtime. Googleo y al caer aquí digo... ¡¡ ¡ Este tío me suena !!!

¡Saludos!

Chema

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, April 25, 2008 11:06 PM by victor

cuando busque en google no pensé que llegaría a la solución...

se agradece mucho, me solucionaste un problemon...

saludos ^^

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Thursday, June 05, 2008 8:42 PM by Alfonso

Hola, gracias por tu solución. me imagino que se le soluciona a otros.

En mi caso tengo instalado Windows Vista. y Visual Studio 2008 pago.

Me sale el mismo error cuando hago los pasos mencionados pero el computador a donde llevo los archivos tiene Windows XP.

Será que hay solución?

Gracias Alfonso

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Sunday, June 08, 2008 11:49 AM by Augusto Ruiz

Hola Alfonso,

Para VIsual Studio 2008, las dlls deberían estar en:

%PROGRAMFILES%\Microsoft Visual Studio 9\VC\redist

O si no, puedes descargar los ficheros aquí:

para 32 bits: www.microsoft.com/.../details.aspx

para 64 bits: www.microsoft.com/.../details.aspx

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Thursday, August 21, 2008 10:58 PM by Su

Hola

Tengo un problema a la hora de ejecutar un programa en microsoft visual studio 2005, es el mismo problema que me da al ejecutarlo en el VC++ Express 2005.

Pues, lo compilo, y todo bien. Pero no veo el icono de ejecutar por ningun lado, asi que le doy el debug y me dice que no encuentra el ejecutable, el .exe

No tengo idea de lo que pasa

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Wednesday, October 22, 2008 9:37 PM by cesar

¿que es un build Release?.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Monday, January 12, 2009 12:37 PM by rubik

hola,

antes que nada me gustaría agradecer la amabilidad que usas en tus respuestas sean novatos o expertos.

estoy cn una versión beta de un programa que necesito probar en varios pcs a la vez y justamente como tú dices, no quiero tener que ir creando msi's innecesarios sino una solución rápida y que no deje rastro como la que tú propones.

pero al hacer lo que dices me sigue dando el mismo problema, mi visual studio 2005 del curro ya traía esas carpetas creadas y con sus respectivas dll's... crees que debería regenerarlas por lo que pueda ser o pq motivo no me funciona?

gracias.

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Friday, January 23, 2009 1:24 PM by Augusto Ruiz

Hola rubik,

Tienes que tener cuidado. En función de la compilación que hayas realizado (debug o release) necesitarás unas dlls u otras, pero las dlls en modo debug no se pueden redistribuir.

Por lo tanto, tienes que asegurarte que tu aplicación esté compilada  en modo Release, y seguir los pasos que comento en el post.

Y ojo!!!! Asegúrate de incluir en el directorio de tu aplicación las dlls de las librerías que estás utilizando (siempre que no sean DLLs COM. Si son DLLs COM, la cosa se complica un poco más...) Podría ser que en el equipo en el que vas a probar la aplicación no estén las librerías instaladas...

Para usar DLLs COM sin registrar, puedes echar un vistazo aquí (en inglés):

www.devx.com/.../1954

Saludos,

# re: Mi aplicación en C++ (VC++ 2005 Express) no se ejecuta en otros equipos!!! (solución)

Monday, May 04, 2009 6:28 AM by CRISTIAN FERNANDEZ

Dejo esta explicación para los que consultaron antes y los que consulten a continuación esta página. Como bien dijo otro lector deben asegurarse de que la configuración de la solución a generar sea en modo "release" para lo cual (en visual studio 2008) van a Generar-->Administrador de configuración y ahí en "Configuración de soluciones activas" eligen "Release" y luego Generan la solución y en la carpeta correspondiente de su proyecto (con nombre "Release" (no debug")) encontraran el ejecutable que pueden distribuir en otros equipos con los archivos que se encuentran en la carpeta muy bien indicada por otro lector con anticipación, o también pueden bajar e instalar (en la otra máquina -donde quieren ejecutar el ejecutable-) la versión redistribuíble del visual studio 2008 del sitio de Microsoft. Si bien también se puede hacer en modo debug, la forma correcta es la que les comento, ya que como muy bien se indicó, no se permite redistriuir los dll de la versión "debug" y el redistribuíble que se puede bajar del sitio de microsoft sólo sirve para la versión "release".

Espero les sirva.

Salu2.