See these pages for details:
Less fortunately, this solution requires that you use a special statically linked import library that decides at runtime whether to load symbols from system libraries like kernel32.dll or user32.dll (in case of Windows NT) or from unicows.dll (which provides Unicode emulation layer under 9X). This import library is only available for Microsoft Visual C++ and is only part of the new Platform SDK, which is rather huge package.
libunicows contains independent implementation of the import library. It can be used with any C compiler (although it was only tested with Mingw32, MSVC and Borland compilers so far) and is released under the Open Source MIT license (this permits you to link the library into your executable without any restrictions).
For compilers where "native" import library is not available in precompiled form or is impossible/difficult to create (this is the case of e.g. Borland C++ which doesn't use COFF libraries), libunicows provides alternative mean of using unicows.dll (beginning with version 0.6). There is a version of unicows import library compiled as a DLL, called unicows_wrapper.dll. You can create import library for the wrapper as you do with any other DLL and calls to Unicode API functions will go through the wrapper DLL. Unlike when creating such import library for unicows.dll, unicows.dll is not used on NT/2000/XP systems when using the wrapper.
Mingw32 | libunicows-0.6.4-mingw32.zip |
Microsoft Visual C++ 6 | libunicows-0.6.4-msvc6.zip |
Borland C++ | libunicows-0.6.4-bcc32.zip |
Watcom C/C++ | libunicows-0.6.4-watcom.zip |
Source code | libunicows-0.6.4-src.tar.gz |
See also the SF.net project page