Mail Archives: djgpp/1997/12/03/04:30:11
Well, I had a litle time yesterday evening to work on my problems.
It seems that my problems come from the stdio.h file that come with
RSXNTDJ and which define the following stuff:
extern __inline__ int feof (FILE *_s)
{
return (_s->_flags & _IOEOF ? 1 : 0);
}
extern __inline__ int ferror (FILE *_s)
{
return (_s->_flags & _IOERR ? 1 : 0);
}
/* Do not this function in application programs! */
extern __inline__ int _getc_inline (FILE *_s)
{
return (--_s->_rcount >= 0
? (unsigned char)*_s->_ptr++
: _fill (_s));
}
/* Do not this function in application programs! */
extern __inline__ int _putc_inline (int _c, FILE *_s)
{
return (--_s->_wcount >= 0 && (_c != '\n' || !(_s->_flags & _IOLBF))
? (unsigned char)(*_s->_ptr++ = (char)_c)
: _flush (_c, _s));
}
#if defined (__MT__)
#define getc(s) fgetc(s)
#define putc(c,s) fputc(c,s)
#else
#define getc(s) _getc_inline(s)
#define putc(c,s) _putc_inline(c,s)
#endif
extern __inline__ int getchar (void) { return getc (stdin); }
extern __inline__ int putchar (int _c) { return putc (_c, stdout); }
extern __inline__ int fileno (FILE *_s) { return _s->_handle; }
But because of the "extern" keyword, those functions are not compiled in
the object file and they seem to not be defined anywhere else.
So, I've done a stdio.c file with the following lines
#define extern
#include <stdio.h>
and linked it with the rest.
With this work around, my program is correctly linked.
The next problem is that RSXNTDJ recognize that the flex library libfl.a
is a standard djgpp library (ie not a rsxntdj one) and instead of a GUI
application,it build a Console application !
Damned, it looks like I have to rebuild the flex lib my self with the
RSXNTDJ tools.
Olivier.
- Raw text -