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

RFOG rfog en cableworld.es
Sab Jul 21 11:21:35 CEST 2007


En Fri, 20 Jul 2007 19:00:41 +0200, 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?
>

No puedes saberlo como no te mires todo el código fuente y vayas  
anotando... En principio debería ser algo lógico, como ARM y cosas así,  
pero al final termina siendo un poco caótico. No hay una regla fija, y a  
veces la imaginación de los coders (como nosotros mismos) puede darte  
desagradables sorpresad.

> 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.
>

Pues no deberías, o más bien te aconsejo que te organices el código de  
forma que puedas usarlas. Si el eVC ya es lento trabajando, ni te digo  
compilar sin ellas. Pero es algo completamente opcional. Lo que hacen es  
generar en una pasada un fichero de "preparseo" que contiene una etapa  
intermedia del compilador, de forma que cuando se necesite ese bloque, en  
lugar de generarlo cada vez, se tome ya listo. Acelera un montón la  
compilación si eres capaz de organizarlo bien.

Personalmente nunca he conseguido que me funcionaran bien del todo; un  
proyecto creado con el asistente sí que funciona solo, es decir, si  
cambias algo que las afecte éstas se vuelven a compilar, pero en los  
hechos a mano tienes que cambiar las opciones del proyecto para generarlas  
y de nuevo para usarlas.

> 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>
>
No.
Tienes una opción más rápida para definir macros globales a todo el  
programa. Vete a las opciones de tu proyecto, pestaña C/C++, categoría  
Preprocesador y verás una opción que dice "Preprocessor definitions". Lo  
que yo te he copiado aquí es lo que yo tengo ahí, así te ahorras de ir  
tocando código fuente y tienes una forma de cambiar el comportamiento  
global.

> 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.
>
> R> En Fri, 20 Jul 2007 16:39:09 +0200, ERVA <abraxas_dragon en yahoo.com.mx>
> R> escribió:
> R> > Hola:
> R> >
> R> > En estos dias estoy tratando de compilar unas librerias en Microsoft
> R> > Visual Studio  (Visual C++) para una arquitectura ARMV4 que  
> corresponde
> R> > con un sistema Windows Pocket PC, pero no he tenido mucho éxito. La
> R> > salida me arrojá alguno errores que los comparto con ustedes:
> R> >
> R> > /**********************************************************/
> R> > ..\funccomm.c(667) : error C2037: left of 'tm_year' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(681) : error C2037: left of 'tm_mon' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(682) : error C2037: left of 'tm_mday' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(683) : error C2037: left of 'tm_hour' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(684) : error C2037: left of 'tm_min' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(685) : error C2037: left of 'tm_sec' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(699) : error C2037: left of 'tm_mon' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(700) : error C2037: left of 'tm_mday' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(701) : error C2037: left of 'tm_hour' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(702) : error C2037: left of 'tm_min' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\funccomm.c(703) : error C2037: left of 'tm_sec' specifies  
> undefined
> R> > struct/union 'tm'
> R> > ..\pkcs5.c(21) : fatal error C1083: Cannot open include file:
> R> > 'sys\timeb.h': No such file or directory
> R> > ...\r_random.c(49) : fatal error C1083: Cannot open include file:
> R> > 'sys\timeb.h': No such file or directory
> R> >  
> /***********************************************************************/
> R> >
> R> > Tomando en cuenta los dos últimos mensajes de error, encontré en  
> otras
> R> > listas de correo
> R> > (http://sources.redhat.com/ml/pthreads-win32/2003/msg00101.html y
> R> > http://cygwin.com/ml/pthreads-win32/2004/msg00070.html) donde  
> tratan de
> R> > compilar una librería para WinCE en eVC++ (muy similar a lo que  
> estoy
> R> > haciendo, pero para  otra librería). Sugieren agregar una macro  
> (_ARM_ o
> R> > WINCE, dependiendo) en ciertas partes del código.
> R> >
> R> > Lo que a mí me confunde es cuál es el criterio que se tiene que  
> seguir
> R> > para hacer esas modificaciones.
> R> >
> R> > Ahora bien, dandome una vuelta por las macros definidas en mi Visual
> R> > C++ para WinCE encontré dos macros definidas: _ARM_ y ARM.
> R> >
> R> > Espero me puedan orientar, por favor.
> R> >
> R> > De antemano gracias.
> R> >
> R> > Reciban un afectuoso saludo.
> R> > _______________________________________________
> R> > Lista de correo Cconclase Cconclase en listas.conclase.net
> R> >  
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> R> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> R> --
> R> Visita mi  blog principal: http://rfog.blogsome.com
> R> Y este sobre programación: http://geeks.ms/blogs/rfog
> R> Libros, ciencia ficción y  programación
> R> ========================================
> R> No tenemos más derecho a consumir felicidad sin producirla, que a  
> consumir
> R> riqueza sin producirla.
> R> 		-- George Bernard Shaw. (1856-1950) Dramaturgo irlandés.
> R> _______________________________________________
> R> Lista de correo Cconclase Cconclase en listas.conclase.net
> R>  
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> R> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ



-- 
Visita mi  blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y  programación
========================================
No tenemos más derecho a consumir felicidad sin producirla, que a consumir  
riqueza sin producirla.
		-- George Bernard Shaw. (1856-1950) Dramaturgo irlandés.




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