Microsoft Layer for Unicode


Microsoft Layer for Unicode is a software library for Windows software developers to simplify creating Unicode-aware applications for Windows 95, Windows 98, or Windows Me. It is also known as UnicoWS or UNICOWS.DLL, or even "cows".
Microsoft describes it as providing "a layer over the Win32 API on Windows 95/98/Me so that you can write a single Unicode version of your application and have it run properly on all platforms." Previously, software developers had to either provide two separate versions of an application, or perform complex string translations and API decisions at runtime.

Availability

The MSLU was announced in March 2001, and first available in the July 2001 edition of Microsoft's Platform SDK, which is arguably long after the peak popularity of Windows 95/98/Me.
It had a codename of Godot, which is a reference to the play Waiting for Godot, because it was felt to be long overdue.

How it works

Normally, the Windows API provides both A and W versions of most functions. On Windows 95/98/Me, only the A versions are implemented and attempting to call a W version will fail with an error code that indicates that the function is unimplemented. On the Windows NT line of operating systems, both the A and W versions are implemented.
By adding the UNICOWS.LIB to the link command-line before KERNEL32.LIB, ADVAPI32.LIB, or any other supported Win32 system link library, the linker will resolve referenced symbols with the one provided by UNICOWS.LIB instead.
When a wide-character function is called for the first time at runtime, the function stub in UNICOWS.LIB first receives control and checks if it is running on a Windows 95/98/Me system:
Because of this technique, when an application is linked against MSLU, only Windows 95/98/Me systems will need the UNICOWS.DLL at runtime, and on all other versions of Windows there is only a slight performance penalty for the first function call.
A common problem encountered occurs when some updaters and uninstallers rename or delete the file OLEDLG.DLL, preventing the operating system from loading UNICOWS.DLL. This results in applications, such as OpenOffice.org, reporting that "Application cannot start because one of the required libraries cannot be found." This occurs even if UNICOWS.DLL is installed in the system.

Microsoft