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

Programante programante en gmail.com
Sab Jul 21 22:15:37 CEST 2007


ERVA escribió:
> Encontré una macro que se hace llamar _WIN32_WCE, entonces lo que hice fue en cada parte del código donde hubiera una compilación condicional en la que se necesitara comprobar esta arquitectura, la fuí agregando. Con esto me deshice de los dos últimos errores. Ahora me quedá resolver los demás errores y creo que esto se debe a un "warning" que no lo públique previamente. Se tratá del siguiente "warning"
>
> ---------------------------------
> warning C4013: 'gmtime' undefined; assuming extern returning int
> ---------------------------------
>
> De donde proviene ese "warning es del siguiente código:
>
> ----------------------------------
> ...
> struct tm *newtime;
>    #ifdef _WIN32_WCE   
>      SYSTEMTIME ltime;
>    #else
>      time_t ltime;
>    #endif
>    int actual, next, i;
>    unsigned char actual_s[3],next_s[3];
>    char temp[4];
>    
>    #ifdef _WIN32_WCE
>      GetSystemTime( &ltime );
>    #else
>      time( &ltime );
>    #endif
>    
>    newtime = gmtime( &ltime );								          actual   = newtime->tm_year;
> ...
> ----------------------------------------------------
>
> Por lo que entiendo es que esa función o no encuentra dentro del contexto de WCE, por lo que se tiene que usar alguna que sea compatible. Y se tendría que desarrollar una compilación condicional para cada caso. Espero estár en lo correcto, sino por favor corriganme y si se puede hasta unos "zapes" ("zape" en mi tierra se entiende a unos golpes en con la palma de la mano en la cabeza) para que entienda.
>
> De antemano Gracias...
>
> El pasado 2007-07-20 14:39:09, ERVA escribió:
>  
> E> Hola:
> E> En estos dias estoy tratando de compilar unas librerias en Microsoft Visual Studio  (Visual C++) para una arquitectura ARMV4 que corresponde con un sistema Windows Pocket PC, pero no he tenido mucho éxito. La salida me arrojá alguno errores que los comparto con ustedes:
> E> /**********************************************************/
> E> ..\funccomm.c(667) : error C2037: left of 'tm_year' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(681) : error C2037: left of 'tm_mon' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(682) : error C2037: left of 'tm_mday' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(683) : error C2037: left of 'tm_hour' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(684) : error C2037: left of 'tm_min' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(685) : error C2037: left of 'tm_sec' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(699) : error C2037: left of 'tm_mon' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(700) : error C2037: left of 'tm_mday' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(701) : error C2037: left of 'tm_hour' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(702) : error C2037: left of 'tm_min' specifies undefined struct/union 'tm'
> E> ..\funccomm.c(703) : error C2037: left of 'tm_sec' specifies undefined struct/union 'tm'
> E> ..\pkcs5.c(21) : fatal error C1083: Cannot open include file: 'sys\timeb.h': No such file or directory
> E> ...\r_random.c(49) : fatal error C1083: Cannot open include file: 'sys\timeb.h': No such file or directory
> E> /***********************************************************************/
> E> Tomando en cuenta los dos últimos mensajes de error, encontré en otras listas de correo (http://sources.redhat.com/ml/pthreads-win32/2003/msg00101.html y http://cygwin.com/ml/pthreads-win32/2004/msg00070.html) donde tratan de compilar una librería para WinCE en eVC++ (muy similar a lo que estoy haciendo, pero para  otra librería). Sugieren agregar una macro (_ARM_ o WINCE, dependiendo) en ciertas partes del código. 
> E> Lo que a mí me confunde es cuál es el criterio que se tiene que seguir para hacer esas modificaciones.
> E> Ahora bien, dandome una vuelta por las macros definidas en mi Visual C++ para WinCE encontré dos macros definidas: _ARM_ y ARM.
> E> Espero me puedan orientar, por favor.
> E> De antemano gracias.
> E> Reciban un afectuoso saludo.
>   
Intenta buscar el archivo sys\timeb.h que no encuentra. Probablemente 
allí se definan los tm_* que te dan errores, así como el gmtime. El 
problema es que parece estar pensado para compilar en Linux (creo 
recordar que gmtime es una extensión GNU), así que lograr compilarlo con 
Visual C++ puede ser bastante complicado.




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