pequeños problemitas, usando dev c++ y visual c++

Iniciado por luis_74, 4 Mayo 2015, 19:46 PM

0 Miembros y 1 Visitante están viendo este tema.

x64core

Cita de: luis_74 en  9 Mayo 2015, 19:43 PM



x64Core

instale el vstudio 2013 en un windows 7, y funciona todo correcto, ya compile mis primeros programitas y los abri , funcionan todo correcto.

pero hay un problema que si los abro en windows xp, salta el mensaje "c:\ejemplo.exe no es una aplicacion valida" , revisé la configuracion del vstudio y en plataforma dice: 32bits, modo: debug , probe cambiando al modo: release , cambie tambien en framework: 4.5.1 , 3.0, 2.0 y etc,  pero el igual sigue sin funcionar en winxp.

q debo hacer si quiero que se funcionen en todos los windows?

los programas que habia compilado antes con dev c++ y  visual c++ 6.0  funcionan sin .problemas en win7 y win xp,
Espero que hayas descargado del sitio oficial: https://www.visualstudio.com/downloads/ o una version actualizada, ese problema es viejo se resolvio en la actualizacion 2. Ahora, si es una version actualizada o ya has descargado de nuevo el VS actualizado e instalado entonces en propiedades del proyecto -> general -> Plataforma: aparecera un menu similar o igual:

Seleccionas Visual Studio 2013 - Windows XP, con eso las aplicaciones funcionarán desde Windows XP hasta la ultima version, el VS usará las cabeceras y librerias correctas para que los programas funcionen desde esa version.

Otra manera seria establecer el valor correcto en las cabeceras de la imagen PE, debe ser 5.1 ya que es la version que coresponde a Windows XP:
Pero de esta manera debes de ser cuidadoso no usando funciones/simbolos que esten disponibles solo desde Windows Vista o superior.

x64core

Por si acaso, otro problema que veo entre la gente nueva usando las nuevas versiones de VS es el del modulo MSVCR<XXX>.dll. Debes de saber que al compilar de forma dinamica tu programa dependerá del modulo en donde se encuentren las funciones, para Visual studio 2013 ese modulo no estará instalado en viejas versiones de Windows ( en realidad el Windows debe ser una version muy vieja para no tener los modulos )  ellos se instalan en el paquete del Framework 2.0 o superior ( No estoy 100% seguro en qué version exactamente pero desde el Framework 4.0 seguro ) o alguna aplicacion con instalador que requira de los modulos entonces los instalará en el sistema. eso es al compilar de forma dinamica, al compilar las librerias de forma estatica entonces te olvidas de ese problema.

Otra manera para resolver de forma dinamica es enlazar con las librerias de las viejas versiones del VS ( 2008, 2010 ) Pero esto no funciona si estas usando las nuevas caracteristicas del C++ 11/14 , en ese caso si necesitarás tener la ultima version instalada.

luis_74

#12
sí lo descrague de la misma pagina, lo configure igual:


aunque no me muestra todas esas opciones que te salen "windowsphone, windowsdriver, windows SDK y demás"



-si  lo ponia en configuration: debug , el minimun required system  se desplegaba: 5.1, si lo cambiaba a release , se borraba ese "5.1" , y solo quedaba ese "edit". bueno , lo deje en release y escribir a mano el 5.1



- lo compile , me fui a lacarpeta release, guarde el .exe y lo pase a windows xp, y sale esto:




veo que lo malo de estos IDEs actuales (incluyendo el visual basic.net ) es que generan programas que no son portables siempre te salen con errrores al abrirlos en otros pcs que no lleven instalados los IDEs con que fueron hechos,  supongo que es caso perdido , usaré los IDEs viejitos que son más seguros, igual gracias.

-que es eso de la compilacion dinamica o estatica? , mi programas son de tipo consola.




*arriba puse unas imagenes de como lo configuré y del error que sale, parece que aveces no se pueden verlas imagenes en el foro .


x64core

#13
Ese problema de dependecias es el que te comente en el segundo post, supuse que hibas a tener ese problema también.
¿Queres resolverlo sin complicarte tanto? Ve a configuración -> C/C++ -> Code Generation -> Opción 'Runtime Library': Multi-threaded (/MT).
Con eso enlazas la libreria de forma estatica, todas las funciones que estaban en el modulo se compilarán en tu programa, de esa manera ya no dependerá del modulo.

Nota que cada configuracion ( Debug, Release ) puede tener diferentes opciones, asi que si estableces una opcion en una configuracion las demás no se verán afectadas, para establecer una opcion para todas las configuracion en el menu de configuraciones selecccionar: All configurations.
Eso se hace cada vez que se crea un nuevo proyecto, luego podes crear un nuevo template y agregarlo al menu de inicio para que asi podas seleccionarlo de forma automatica con tus configuraciones.

Luego con experiencia podes enlazar las viejas librerias del 2008, 2010 con la nueva version, con tiempo verás que VC++ y Visual Studio junto con todas las herramientas que incluye es el entorno perfecto para Windows, solo se necesita tiempo para aprender a usarlo.

luis_74

Cita de: x64Core en 11 Mayo 2015, 04:08 AM
Ese problema de dependecias es el que te comente en el segundo post, supuse que hibas a tener ese problema también.
¿Queres resolverlo sin complicarte tanto? Ve a configuración -> C/C++ -> Code Generation -> Opción 'Runtime Library': Multi-threaded (/MT).
Con eso enlazas la libreria de forma estatica, todas las funciones que estaban en el modulo se compilarán en tu programa, de esa manera ya no dependerá del modulo.

Nota que cada configuracion ( Debug, Release ) puede tener diferentes opciones, asi que si estableces una opcion en una configuracion las demás no se verán afectadas, para establecer una opcion para todas las configuracion en el menu de configuraciones selecccionar: All configurations.
Eso se hace cada vez que se crea un nuevo proyecto, luego podes crear un nuevo template y agregarlo al menu de inicio para que asi podas seleccionarlo de forma automatica con tus configuraciones.

Luego con experiencia podes enlazar las viejas librerias del 2008, 2010 con la nueva version, con tiempo verás que VC++ y Visual Studio junto con todas las herramientas que incluye es el entorno perfecto para Windows, solo se necesita tiempo para aprender a usarlo.



ya cambie todo como dijiste , todos  los programas corren bien en windows xp, gracias.


solo una duda, con esa nueva configuracion puedo olvidar por completo todos los problemas de portabilidad? o hay algun otro tema, consejo que deba checar, mis programas deben de windows xp  en adelante, por eso lo pruebo en ese sistema.

gracias por la gran ayuda, me sirvio mucho.

x64core

Cita de: luis_74 en 12 Mayo 2015, 04:56 AM


ya cambie todo como dijiste , todos  los programas corren bien en windows xp, gracias.


solo una duda, con esa nueva configuracion puedo olvidar por completo todos los problemas de portabilidad? o hay algun otro tema, consejo que deba checar, mis programas deben de windows xp  en adelante, por eso lo pruebo en ese sistema.

gracias por la gran ayuda, me sirvio mucho.
Tus programas funcionarán desde Windows XP.