The wchar_t type has different standard
sizes in Unix (4 bytes) and Windows (2 bytes). You need a
recent gcc version (2.9.7 or later) that supports the
-fshort-wchar option to set the
size of wchar_t to the one expected
by Windows applications.
If you are using Unicode and you want to be able to use
standard library calls (e.g.
wsprintf), then you must use
the msvcrt runtime library instead of glibc. The functions in
glibc will not work correctly with 16 bit strings.