Problema con Visual Studio 2013

Iniciado por Vaagish, 12 Marzo 2014, 01:45 AM

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

Vaagish

Hola chicos, quizás este no sea el lugar para la duda, pero como programo en c++ en el visual studio lo pongo acá, cualquier cosa movemos el tema y listoo..

El asunto es que tengo una pc con visual studio 2013 y Windows 7,, y no logro generar el ejecutable compatible con Windows XP,, Windows XP me dice "no es una aplicacion win32 valida",, la pc con windows 7 tiene sistema operativo de 32 bits.. O sea,, calculo yo que el ejecutable si es de 32 bits,, (aunque winXP diga que no)

Que puede ser??

Gracias!! Saludos!

Eternal Idol

Los datos son insuficientes como para dar una respuesta certera. ¿Estas generando el ejecutable en modo RELEASE?
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

Sep,, modo release y modo debug,, da igual.. Tiene importancia que una sea procesador AMD y la otra INTEL? Es la unica diferencia aparte del SO, bue,, y que una es notebook (Windows 7, donde genero y funciona, procesador AMD)  y la otra PC (Windows XP, procesador INTEL)

Saludos! Gracias EI

Eternal Idol

Ejecuta el Dependency Walker en el XP donde no funciona el programa, puede que hayas enlazado estaticamente funciones mas nuevas que XP.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

CitarEjecuta el Dependency Walker en el XP donde no funciona el programa, puede que hayas enlazado estaticamente funciones mas nuevas que XP.

Efectivamente:

CitarError: At least one required implicit or forwarded dependency was not found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Librerías que no encuentra:
MSVCP120.DLL
MSVCR120.DLL
DWMAPI.DLL
MOBSYNC.DLL

Con la libreria que calculo tengo mas problemas es con Wininet, las otras son las de siempre,, Windows.h e iostrasm. Igual asi mismo no me funciona ni un holamundo en la consola.

Como puedo solucionar este detalle gran sabio?  :P

Saludos!

Eternal Idol

#5
http://www.microsoft.com/en-us/download/details.aspx?id=40784

Pero mejor genera tu ejecutable con la libreria CRT estatica; con eso solucionas como minimo las dos primeras DLLs.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

#6
CitarThe Visual C++ Redistributable Packages install run-time components that are required to run C++ applications that are built by using Visual Studio 2013.

Huu,, que garrón.. siempre lo mismo microsoft.. bue, encontré una opción del VS2013, en:

Propiedades de configuracion -> Conjunto de herramientas de la plataforma -> Visual Studio 2013 - Windows XP(v120_xp)

Cambiando eso, ahora al menos al ejecutar el programa en XP me dice:
Error al iniciar porque falta MSVCP120.dll. La reinstalacion... blabla

Me decias que con:
CitarPero mejor genera tu ejecutable con la libreria CRT estatica; con eso solucionas como minimo las dos primeras DLLs.

Como seria eso?




Solucion:

CitarSi vincula dinámicamente la aplicación a la biblioteca MFC, deberá redistribuir Msvcr100.dll porque todos los archivos DLL de MFC usan la versión compartida de la biblioteca en tiempo de ejecución de C (CRT). También tiene que redistribuir Mfc100u.dll o Mfc100.dll.
Si vincula estáticamente la aplicación a MFC (es decir, si se especifica Utilizar MFC en una biblioteca estática en la pestaña General del cuadro de diálogo Páginas de propiedades), no es necesario redistribuir Mfc100u.dll o Mfc100.dll. Sin embargo, aunque la vinculación estática puede funcionar para probar la implementación interna de las aplicaciones, se recomienda no utilizarla para redistribuir MFC. Para obtener más información sobre las estrategias recomendadas para implementar las bibliotecas de Visual C++, vea Elegir un método de implementación.

Ahora si funciona,, con esas dos modificaciones parece que va..

Gracias!!! Saludos!

Eternal Idol

De nadas; MFC esta obsoleto igual que  XP  ;D
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

Ups.. creí que estaba solucionado.. pero al compilar otro proyecto mas completo que "holamundo" no funca.. jaja

Ahora me dice: simbolo externo _imp_GetSystemMetrics@4 sin resolver

Que bajón esto.. no puedo pedirle a cada usuario que se instale el Visual C++ Redistributable Packages...  :rolleyes:

Seguiré investigando..

CitarDe nadas; MFC esta obsoleto igual que  XP  ;D
Sep.. pero tiene mas uso que Win8 jaja,, al menos de nuestro lado del mundo..

Sigo escuchando opciones..

Saludos!

Eternal Idol

Te falta la libreria de importacion user32.lib para GetSystemMetrics. O la pones en el IDE (la mejor solucion pero ni tengo el VS 2013) o en el codigo:

Código (cpp) [Seleccionar]
#pragma comment(lib, "user32.lib")
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón