This file describes how to build liblouis.dll That is the only binary 
file needed by someone who wishes to use liblouis in an application. The 
tables are in the tables subdirectory of the liblouis distribution. For 
an overview of liblouis see README. 

First, obtain the liblouis source, either by downloading the latest 
tarball or from the Git repository. See HACKING for instructions. 
If you downloaded the tarball, unpack it.

To build liblouis.dll you will need the Microsoft command-line C/C++ 
tools. You will also have to set environment variables correctly. You 
can download the Community version of Microsoft Visual Studio, including 
Visual C++, and the Microsoft Windows SDK for free. It has a batch file 
that sets environment variables and then displays a command prompt.

Next, go to the subdirectory windows. Edit the file configure.mk. If you 
want 32-bit Unicode change the 2 in the line UCS=2 to a 4.

Now type

nmake /f Makefile.nmake

The directory will contain liblouis.dll and liblouis.lib, along with 
object files.
