SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: spyfly en Domingo 23 de Abril de 2006, 11:02

Título: Programa En Cualquier Pc
Publicado por: spyfly en Domingo 23 de Abril de 2006, 11:02
Hemos realizado un programa con visual c++ y despues de compilar (F7) el ejecutable q crea no funciona en otros pcs pero si en el que lo hemos creado.
En el resto de PC's pone que nos falta una libreria DLL. ¿Cómo se puede crear un ejecutable válido para cualquier PC?

Un Saludo.
Gracias.
Título: Re: Programa En Cualquier Pc
Publicado por: Eternal Idol en Domingo 23 de Abril de 2006, 11:08
Si estas usando MFC es imposible sino tenes que seleccionar la opcion para que te enlace la RTL (Run Time Library) estatica y no dinamicamente.

Aca tenes un programa para ver que librerias necesita tu ejecutable:
http://www.dependencywalker.com (http://www.dependencywalker.com)
Título: Re: Programa En Cualquier Pc
Publicado por: spyfly en Domingo 23 de Abril de 2006, 12:39
No lo hemos entendido bien.
¿Con MFC no se puede ejecutar ese programa en otro PC?
Si con MFC no se puede, como deberiamos hacer esta aplicacion para que sea compatible en más PC´s.
Si existe alguna manera de hacerlo con MFC ¿cual es?

Gracias.
Título: Re: Programa En Cualquier Pc
Publicado por: Eternal Idol en Domingo 23 de Abril de 2006, 14:18
Cita de: "spyfly"
No lo hemos entendido bien.
¿Con MFC no se puede ejecutar ese programa en otro PC?
Si con MFC no se puede, como deberiamos hacer esta aplicacion para que sea compatible en más PC´s.
Si existe alguna manera de hacerlo con MFC ¿cual es?

Gracias.
Si se puede pero necesitan las librerias correspondientes a MFC si la enlazas dinamicamente. Esto se puede controlar para que no se haga dinamico sino estatico, entonces no se necesita nada para que pueda funcionar en cualquier PC.

En la configuracion del proyecto, General, Valores predeterminados del proyecto: Uso de MFC >> Utilizar MFC en una biblioteca estatica.
Título: Re: Programa En Cualquier Pc
Publicado por: JuanK en Domingo 23 de Abril de 2006, 16:27
Pero visual C++ debe tene un generador de instaladores ( setup factory) o algo así,  entonces el detectará las dependencias en cuanto a librerias y te creara un pack con todo lo ncesario... como no se que version de vs tienes no te puedo ayudar mas por el momento, pero básicamente esa es la idea.
Título: Re: Programa En Cualquier Pc
Publicado por: Eternal Idol en Domingo 23 de Abril de 2006, 18:10
Cita de: "JuanK"
Pero visual C++ debe tene un generador de instaladores ( setup factory) o algo así,  entonces el detectará las dependencias en cuanto a librerias y te creara un pack con todo lo ncesario... como no se que version de vs tienes no te puedo ayudar mas por el momento, pero básicamente esa es la idea.
Si, se puede generar un instalador pero la pregunta es:

Cita de: "spyfly"
Hemos realizado un programa con visual c++ y despues de compilar (F7) el ejecutable q crea no funciona en otros pcs pero si en el que lo hemos creado.
En el resto de PC's pone que nos falta una libreria DLL. ¿Cómo se puede crear un ejecutable válido para cualquier PC?

Entonces la respuesta es que se debe enlazar estaticamente la MFC.
Título: Re: Programa En Cualquier Pc
Publicado por: JuanK en Domingo 23 de Abril de 2006, 18:23
Cita de: "Eternal Idol"
Entonces la respuesta es que se debe enlazar estaticamente la MFC.

Si, y funciona indudablemente, sobre todo si el proyecto es pequeño y solo estara instalado en unas cuantas pc, pero no me parece la mejor solución, desde que se pueda enlazar dinamicamente mucho mejor, pues no podemos tener todos los programas con tamaño mayor por estar linkeando estaticamente todas las librerias, para eso se crearon las librerias dinámicas no? :ph34r:
Título: Re: Programa En Cualquier Pc
Publicado por: Eternal Idol en Domingo 23 de Abril de 2006, 18:28
Cita de: "JuanK"
Si, y funciona indudablemente, sobre todo si el proyecto es pequeño y solo estara instalado en unas cuantas pc, pero no me parece la mejor solución, desde que se pueda enlazar dinamicamente mucho mejor, pues no podemos tener todos los programas con tamaño mayor por estar linkeando estaticamente todas las librerias, para eso se crearon las librerias dinámicas no? :ph34r:
Depende, si es un ejecutable solo tiene que copiarlo y estara listo en cualquier maquina para funcionar. Tampoco hay necesidad de "recompilar" el instalador cada vez que se genera un nueva version y el tamaño va a ser aproximado ya que la libreria que no enlaces estaticamente la tendras que distribuir dentro del instalador ...

Mientras que si tenemos varios archivos con diferentes ejecutables y DLLs que forman un proyecto sin duda un instalador (aunque no recomendaria el del VS) es la solucion mas acertada.

Las librerias dinamicas no siempre son la respuesta correcta, especialmente cuando son de terceros y tenemos que ocuparnos de problemas como el versionado. Si fueran librerias que vinieran siempre con el S.O. evidentemente no existiria este dilema.
Título: Re: Programa En Cualquier Pc
Publicado por: spyfly en Lunes 24 de Abril de 2006, 09:57
Nosotros utilizamos microsoft visual c++ 6.0 y ya hemos conseguido crear un proyecto que funcione en cualquier PC seleccionando la opción de usar la MFC estaticamente cuando creamos el proyecto.
¿Como se podria utilizar el instalador de vs?

Gracias
Un saludo
Título: Re: Programa En Cualquier Pc
Publicado por: Eternal Idol en Lunes 24 de Abril de 2006, 13:26
Cita de: "spyfly"
Nosotros utilizamos microsoft visual c++ 6.0 y ya hemos conseguido crear un proyecto que funcione en cualquier PC seleccionando la opción de usar la MFC estaticamente cuando creamos el proyecto.
¿Como se podria utilizar el instalador de vs?
Me alegro de que les haya servido; en cuanto al instalador de VC++ no se los recomiendo, es preferible usar otro mejor.

NSIS: Open Source http://nsis.sourceforge.net/Main_Page (http://nsis.sourceforge.net/Main_Page)
InstallShield: propietario http://www.installshield.com/ (http://www.installshield.com/)

Hay MUCHOS mas, prueben a ver cual es el que mejor les viene.
Título: Re: Programa En Cualquier Pc
Publicado por: spyfly en Miércoles 19 de Julio de 2006, 17:23
si, nos han dicho que el de Visual C++ no es el mejor que hay otros mejores. Gracias por los links.
Título: Re: Programa En Cualquier Pc
Publicado por: x.cyclop en Jueves 20 de Julio de 2006, 00:26
www.jrsoftware.org/isinfo.php (http://www.jrsoftware.org/isinfo.php)
Título: Re: Programa En Cualquier Pc
Publicado por: spyfly en Jueves 20 de Julio de 2006, 08:51
Ok, Gracias.