[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