[C con Clase] compilación de una libreria para arquitectura ARMV4

Alex JCR alex_jcr en yahoo.com
Vie Jul 20 20:48:36 CEST 2007


Hola ERVA:

--- ERVA <abraxas_dragon en yahoo.com.mx> escribió:

> Hola RFOG, gracias por tus comentarios.
> 
> El pasado 2007-07-20 15:48:33, RFOG escribió:
>  
> R> como ARM, MIPS, etc. El problema es que no es un tema unificado, ya que  
> R> una partes requieren _ARM, otras ARM, otras quizás otros valores. Y no es  
> R> culpa de MS, sino de las empresas anexas que desarrollan ese código, que  
> R> no siguen las mismas pautas.
> 
> ¿Cómo puedo aprender eso, saber que unas partes requieren cierta macro y otras no?

Bueno, primeramente esto depende del tipo de arquitectura (x86,Mips,Alpha,etc.), tipo de
plataforma (Windows,NT,Linux,Unix), incluso tipo de cadenas (Unicode) que usas para desarrollar o
crear tus programas. El codigo en los archivos fuente, librerias y cabeceras base, y otros codigos
de terceros que emplees estan separadas por instrucciones de preprocesamiento condicional
(#if,#ifdef,#ifndef,#else,#endif) para realizar una compilacion condicional, de tal manera que
cuando defines en tu proyecto una macro o etiqueta que identifique a una arquitectura o una
plataforma en especial, al momento de compilar solo se utilizara el codigo para ese tipo de
arquitectura o plataforma, es decir el codigo correcto.

> R> La solución más socorrida pasa por coger el stdafx.h de un proyecto  
> R> antiguo (incluso del eVC 3) que compile bien e insertarlo en el stdafx.h  
> 
> Cuando creo el proyecto, le deshabilito las cabeceras precompiladas, ¿por qué? no tengo un
> fundamento claro de hacer esto.

Esto de deshabilitar las cabeceras generadas por el VC++ generalmente se hace cuando el proyecto
que vamos a realizar no utilizara librerias MFC o algun otro tipo de componente
(ActiveX,BaseDatos); o sea nuestra aplicacion, sea de consola o con ventanas, solo usa codigo
nativo de C/C++ o la API nativa de windows.

> R> Macros que debes definir hay muchas, en uno de los proyectos que yo manejo  
> R> con el eVC tengo:
> R>
> DEBUG,ARM,_ARM_,ARMV4I,UNDER_CE=$(CEVersion),_WIN32_WCE=$(CEVersion),$(CePlatform),
UNICODE,_UNICODE
> R> pero tu podrías necesitar más.
> 
> ¿A que te refieres con definir? ¿Al echo de usar las directiva #define? Es decir, se puede crear
> por ejemplo algo así:
> 
> #define ARM <algun valor>

Si, siempre y cuando la aplicacion que quieras generar sea para ese tipo de Arquitectura.

Por ejemplo, si en mi aplicacion tuviera que utilizar cadenas tipo Unicode (dos bytes por cada
caracter) y utilizar algunas rutinas nativas que manipulen mi cadena, tendre que definir la macro
siguiente antes de incluir las cabeceras (#include's) y de todo mi codigo:

#define UNICODE

para que el compilador utilice el codigo correspondiente y manipule mis cadenas correctamente.

Otro ejemplo concreto es el de la macro WIN32 y _DEBUG.
Cuando uno crea un proyecto en VC++, por lo general y por defecto se crea en modo debug y se
define las macros WIN32 y _DEBUG, aprovechando esto podemos hacer un ejemplo sencillo:

#include <stdio.h>

void TipoAplicacion(void)
{
#ifdef WIN32
   printf("Aplicacion Windows.\n");
#else
   printf("Otro tipo de aplicacion.\n");
#endif
}

void ModoCompilacion(void)
{
#ifdef _DEBUG
   printf("Compilacion en modo 'debug'.\n");
#else
   printf("Compilacion en modo 'release'.\n");
#endif
}

int main()
{
   TipoAplicacion();
   ModoCompilacion();
   return 0;
}

La salida de este programa dependera de si esta o no definida las macros WIN32 y _DEBUG.

> Me vas a disculpar por las preguntas tontas que hago, pero (siempre existe un 'pero' para los
> ignorantes) es que apenas voy iniciando con este tema y por entendido tengo conocimiento que no
> es un tema trivial, pero sino lo hago ahora cuando.
> 
> De antemano muchas gracias.

No te disculpes, las preguntas y la curiosidad son la mejor forma de conocer mas. Espero haber
aclarado en algo tus dudas.

Alex JCR
:)



__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
Regístrate ya - http://correo.espanol.yahoo.com/ 




Más información sobre la lista de distribución Cconclase