Hola
A ver si sabeis responderme esta duda...
Quiero compilar un programa (escrito en AutoIt), para Windows (XP, Vista y Siete), tanto de 32 como de 64 bits.
El programa, utiliza Apis de Windows para algunas cosas (como los hooks de teclado).
¿Funcionan igual las APIS de Windows de 32 bits y las de 64?
(¡Espero que sí!).
Y ya que estamos:
¿Puede instalarse Windows de 64 bits en una máquina con CPU x86 (en las que se instala la versión de 32).
Me habían dicho que sí, pero no lo tengo muy claro que se pueda.
Acias,
Salu2!
APIS win32 y win64
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: APIS win32 y win64
No puedes compilar un programa a la vez para 32bits y 64bits, eso no tiene sentido pues precisamente eso hace referencia al tamaño de instrucciones, punteros, etc. Y todo eso, o es de 32bits o de 64.
En AutoIt puedes compilar a 64bits, pero tienes que elegir. Lo que tendrás que hacer es una versión de 32bits y otra de 64bits, y cada usuario que ejecute la que pueda (los de 64bits las dos, los de S.O. de 32 bits pues sólo la de 32)
Las APIs deberían ser compatibles, pero eso debe ser transparente. El linkador ya enlazará con librerías 32bits o 64bits si están disponibles, y claro que tienen que hacer lo mismo. Otra cosa es que la API esté pasada a 64bits, igual tienes un programa 64bits y cuando haces llamadas al sistema te encuentras ejecutando código en 32bits, pero bueno, en los S.O. 64 bits, ¡quiero pensar que habrán pasado la gran mayoría de las librerías!
Respecto a la segunda pregunta, actualmente va a ser casi imposible que encuentres procesadores de 32bits, desde hace años se usan los de 64. Por cierto, los x86 SON DE 32BITS, así que NO pueden ejecutar código de 64.
Otra cosa es que digan que el procesador es "compatible x86", muy bien, como decir "PC Compatible IBM", que no eran IBM, pues esos procesadores son compatibles, (un quad core por ejemplo lo es), ¡pero no lo son!
Otra cosa es que no tengas instalado un S.O de 64bits, normalmente lo que limita las aplicaciones 64bits es el S.O. no la CPU.
En AutoIt puedes compilar a 64bits, pero tienes que elegir. Lo que tendrás que hacer es una versión de 32bits y otra de 64bits, y cada usuario que ejecute la que pueda (los de 64bits las dos, los de S.O. de 32 bits pues sólo la de 32)
Las APIs deberían ser compatibles, pero eso debe ser transparente. El linkador ya enlazará con librerías 32bits o 64bits si están disponibles, y claro que tienen que hacer lo mismo. Otra cosa es que la API esté pasada a 64bits, igual tienes un programa 64bits y cuando haces llamadas al sistema te encuentras ejecutando código en 32bits, pero bueno, en los S.O. 64 bits, ¡quiero pensar que habrán pasado la gran mayoría de las librerías!
Respecto a la segunda pregunta, actualmente va a ser casi imposible que encuentres procesadores de 32bits, desde hace años se usan los de 64. Por cierto, los x86 SON DE 32BITS, así que NO pueden ejecutar código de 64.
Otra cosa es que digan que el procesador es "compatible x86", muy bien, como decir "PC Compatible IBM", que no eran IBM, pues esos procesadores son compatibles, (un quad core por ejemplo lo es), ¡pero no lo son!
Otra cosa es que no tengas instalado un S.O de 64bits, normalmente lo que limita las aplicaciones 64bits es el S.O. no la CPU.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: APIS win32 y win64
Hola
sí, efectivamente.
Tenía en cuenta el tener que hacer dos versiones. Pero no sabía si tendría que modificar código relacionado con las dlls (psapi.dll, kernel32.dll y user32.dll, son las que más utiliza el programa).
Yo imagino también, que habrán portado las librerías, pero quien sabe, si en alguna función cambia algún parámetro ¡y tienes que volverte loco para ver qué es lo que cambia! :).
¿Linkador?...
Imagino, que te refieres a que no es lo mismo que el procesador sea de 32 o 64 bits, a que pueda ejecutar código de 32 o 64 ¿no?.
Salu2!
sí, efectivamente.
Tenía en cuenta el tener que hacer dos versiones. Pero no sabía si tendría que modificar código relacionado con las dlls (psapi.dll, kernel32.dll y user32.dll, son las que más utiliza el programa).
Yo imagino también, que habrán portado las librerías, pero quien sabe, si en alguna función cambia algún parámetro ¡y tienes que volverte loco para ver qué es lo que cambia! :).
¿Linkador?...
No se si te he entendido bien...Respecto a la segunda pregunta, actualmente va a ser casi imposible que encuentres procesadores de 32bits, desde hace años se usan los de 64. Por cierto, los x86 SON DE 32BITS, así que NO pueden ejecutar código de 64.
Imagino, que te refieres a que no es lo mismo que el procesador sea de 32 o 64 bits, a que pueda ejecutar código de 32 o 64 ¿no?.
Salu2!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: APIS win32 y win64
Si las han pasado a 64bits no van a ser incompatibles, eso faltaba...
Eso sí, yo diría que esos "32" de los nombres de las librerías kernel32, user32... incluso la carpeta del sistema system32... hacen referencia a 32bits
¿Cómo se llaman en un S.O. de 64 bits?
En cualquier caso quiero suponer que el sistema ya te redirige a las funciones adecuadas, como pasa por ejemplo con las versiones ANSI o Unicode (tú llamas a MessageBox en user32, pero el sistema te redirige a MessageBoxA o MessageBoxW según corresponda). Quizás haga algo parecido para llamar a la librería en 32bits o 64 (supongo que tienen las dos pues un S.O 64bits ejecuta perfectamente código 32bits.)
¿Tienes que hacer referencia explícita a una posible user64? Pues no creo que haya que retocar los códigos fuente para recompilar a 64bits, pero mira a ver si hay diferencias...
El linkador (enlazador) iba por ahí, se trata de enlazar, en este caso dinámicamente, las librerías externas (las dll) con tu exe.
Lo de los procesadores... pues si es de los "viejos" de 32 bits, esos NO pueden ejecutar programas compilados con instrucciones de 64bits.
Los de 64bits sí pueden ejecutar los programas de 32bits, y es lo más normal porque normalmente se usan más S.O. de 32bits que de 64, cuando a estas alturas debería ser al revés, pero bueno.
Y con los S.O. lo mismo. En una arquitectura de 32bits puedes instalar SOLO un S.O. 32bits.
En una arquitectura 64bits (los procesadores normales de ahora) puedes instalar S.O. 32 ó 64, pero si instalas un S.O. de 32bits ¡no podrás ejecutar programas de 64bits! (a menos que haya parches que desconozco), aunque la arquitectura nativa del procesador sea 64bits.
Eso sí, yo diría que esos "32" de los nombres de las librerías kernel32, user32... incluso la carpeta del sistema system32... hacen referencia a 32bits
¿Cómo se llaman en un S.O. de 64 bits?
En cualquier caso quiero suponer que el sistema ya te redirige a las funciones adecuadas, como pasa por ejemplo con las versiones ANSI o Unicode (tú llamas a MessageBox en user32, pero el sistema te redirige a MessageBoxA o MessageBoxW según corresponda). Quizás haga algo parecido para llamar a la librería en 32bits o 64 (supongo que tienen las dos pues un S.O 64bits ejecuta perfectamente código 32bits.)
¿Tienes que hacer referencia explícita a una posible user64? Pues no creo que haya que retocar los códigos fuente para recompilar a 64bits, pero mira a ver si hay diferencias...
El linkador (enlazador) iba por ahí, se trata de enlazar, en este caso dinámicamente, las librerías externas (las dll) con tu exe.
Lo de los procesadores... pues si es de los "viejos" de 32 bits, esos NO pueden ejecutar programas compilados con instrucciones de 64bits.
Los de 64bits sí pueden ejecutar los programas de 32bits, y es lo más normal porque normalmente se usan más S.O. de 32bits que de 64, cuando a estas alturas debería ser al revés, pero bueno.
Y con los S.O. lo mismo. En una arquitectura de 32bits puedes instalar SOLO un S.O. 32bits.
En una arquitectura 64bits (los procesadores normales de ahora) puedes instalar S.O. 32 ó 64, pero si instalas un S.O. de 32bits ¡no podrás ejecutar programas de 64bits! (a menos que haya parches que desconozco), aunque la arquitectura nativa del procesador sea 64bits.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: APIS win32 y win64
Hola
en principio, yo no debería tener problema para instalar un Windows de 64 bits, pues tengo un:
¡No me fío un pelo de lo que hayan podido hacer los de Microsoft! :P
Salu2!
¡ahora sí lo entendí bien! :)Lo de los procesadores... pues si es de los "viejos" de 32 bits, esos NO pueden ejecutar programas compilados con instrucciones de 64bits.
Los de 64bits sí pueden ejecutar los programas de 32bits, y es lo más normal porque normalmente se usan más S.O. de 32bits que de 64, cuando a estas alturas debería ser al revés, pero bueno.
Y con los S.O. lo mismo. En una arquitectura de 32bits puedes instalar SOLO un S.O. 32bits.
En una arquitectura 64bits (los procesadores normales de ahora) puedes instalar S.O. 32 ó 64, pero si instalas un S.O. de 32bits ¡no podrás ejecutar programas de 64bits! (a menos que haya parches que desconozco), aunque la arquitectura nativa del procesador sea 64bits.
en principio, yo no debería tener problema para instalar un Windows de 64 bits, pues tengo un:
Todo esto es, porque creo que lo mejor (respecto a las apis win64) será probarlas, para ver que el programa funcione correctamente. De paso, para advertir de los requisitos mínimos del programa :).Intel(R) Pentium(R) Dual CPU
E2200 @ 2.20GHz
2.20 GHz, 2,00 GB de RAM
¡No me fío un pelo de lo que hayan podido hacer los de Microsoft! :P
Salu2!
- XPyro
- Profesional del Autoit
- Mensajes: 542
- Registrado: 04 Mar 2007, 10:12
- Ubicación: México
- Contactar:
Re: APIS win32 y win64
Como lo comenta Ximorro, no creo que se tenga ningún problema con las librerías ya que lo que se cambia es de arquitectura del sistema(Es como un burro y un caballo que recorren el mismo camino, uno es mas rápido que el otro)
Sobre la pregunta 2, no creo que pueda instalarse un sistema x64 con un procesador x86 no es que estén viejos o difíciles de encontrar solo que la arquitectura no lo permite:
http://es.wikipedia.org/wiki/X86-64
Sobre la pregunta 2, no creo que pueda instalarse un sistema x64 con un procesador x86 no es que estén viejos o difíciles de encontrar solo que la arquitectura no lo permite:
http://es.wikipedia.org/wiki/X86-64