1
2Expat can be built on Windows in three ways: 
3  using MS Visual C++ (6.0 or .NET), Borland C++ Builder 5 or Cygwin.
4
5* Cygwin:
6  This follows the Unix build procedures.
7
8* C++ Builder 5:
9  Possible with make files in the BCB5 subdirectory.
10  Details can be found in the ReadMe file located there.
11
12* MS Visual C++ 6:
13  Based on the workspace file expat.dsw. The related project
14  files (.dsp) are located in the lib subdirectory.
15
16* MS Visual Studio .NET 2002, 2003, 2005:
17  The VC++ 6 workspace file (expat.dsw) and project files (.dsp)
18  can be opened and imported in VS.NET without problems.
19
20* All MS C/C++ compilers:
21  The output for all projects will be generated in the win32\bin
22  directory, intermediate files will be located in project-specific
23  subdirectories of win32\tmp.
24  
25* Creating MinGW dynamic libraries from MS VC++ DLLs:
26  
27  On the command line, execute these steps:
28  pexports libexpat.dll > expat.def
29  pexports libexpatw.dll > expatw.def
30  dlltool -d expat.def -l libexpat.a
31  dlltool -d expatw.def -l libexpatw.a
32  
33  The *.a files are mingw libraries.
34
35* Special note about MS VC++ and runtime libraries:
36
37  There are three possible configurations: using the
38  single threaded or multithreaded run-time library,
39  or using the multi-threaded run-time Dll. That is, 
40  one can build three different Expat libraries depending
41  on the needs of the application.
42
43  Dynamic Linking:
44
45  By default the Expat Dlls are built to link statically
46  with the multi-threaded run-time library. 
47  The libraries are named
48  - libexpat(w).dll 
49  - libexpat(w).lib (import library)
50  The "w" indicates the UTF-16 version of the library.
51
52  One rarely uses other versions of the Dll, but they can
53  be built easily by specifying a different RTL linkage in
54  the IDE on the C/C++ tab under the category Code Generation.
55
56  Static Linking:
57
58  The libraries should be named like this:
59  Single-theaded:     libexpat(w)ML.lib
60  Multi-threaded:     libexpat(w)MT.lib
61  Multi-threaded Dll: libexpat(w)MD.lib
62  The suffixes conform to the compiler switch settings
63  /ML, /MT and /MD for MS VC++.
64  
65  Note: In Visual Studio 2005 (Visual C++ 8.0) and later, the
66  single-threaded runtime library is not supported anymore.
67
68  By default, the expat-static and expatw-static projects are set up
69  to link statically against the multithreaded run-time library,
70  so they will build libexpatMT.lib or libexpatwMT.lib files.
71
72  To build the other versions of the static library, 
73  go to Project - Settings:
74  - specify a different RTL linkage on the C/C++ tab
75    under the category Code Generation.
76  - then, on the Library tab, change the output file name
77    accordingly, as described above
78
79  An application linking to the static libraries must
80  have the global macro XML_STATIC defined.
81