Expat can be built on Windows in three ways:
using MS Visual C++ (6.0 or .NET), Borland C++ Builder 5 or Cygwin.
* Cygwin:
This follows the Unix build procedures.
* C++ Builder 5:
Possible with make files in the BCB5 subdirectory.
Details can be found in the ReadMe file located there.
* MS Visual C++ 6:
Based on the workspace file expat.dsw. The related project
files (.dsp) are located in the lib subdirectory.
* MS Visual Studio .NET 2002, 2003, 2005, 2008, 2010:
The VC++ 6 workspace file (expat.dsw) and project files (.dsp)
can be opened and imported in VS.NET without problems.
Note: Tests have their own *.dsw files.
* MS Visual Studio 2013 and 2015:
A solution file for Visual Studio 2013 is provided: expat.sln.
The associated project files (*.vcxproj) reside in the appropriate
project directories. This solution file can be opened in VS 2015
and should be upgraded automatically if VS 2013 is not also installed.
Note: Tests have their own solution files.
* All MS C/C++ compilers:
The output for all projects will be generated in the win32\bin
directory, intermediate files will be located in project-specific
subdirectories of win32\tmp.
* Creating MinGW dynamic libraries from MS VC++ DLLs:
On the command line, execute these steps:
pexports libexpat.dll > expat.def
pexports libexpatw.dll > expatw.def
dlltool -d expat.def -l libexpat.a
dlltool -d expatw.def -l libexpatw.a
The *.a files are mingw libraries.
* Special note about MS VC++ and runtime libraries:
There are three possible configurations: using the
single threaded or multithreaded run-time library,
or using the multi-threaded run-time Dll. That is,
one can build three different Expat libraries depending
on the needs of the application.
Dynamic Linking:
By default the Expat Dlls are built to link statically
with the multi-threaded run-time library.
The libraries are named
- libexpat(w).dll
- libexpat(w).lib (import library)
The "w" indicates the UTF-16 version of the library.
One rarely uses other versions of the Dll, but they can
be built easily by specifying a different RTL linkage in
the IDE on the C/C++ tab under the category Code Generation.
Static Linking:
The libraries should be named like this:
Single-theaded: libexpat(w)ML.lib
Multi-threaded: libexpat(w)MT.lib
Multi-threaded Dll: libexpat(w)MD.lib
The suffixes conform to the compiler switch settings
/ML, /MT and /MD for MS VC++.
Note: In Visual Studio 2005 (Visual C++ 8.0) and later, the
single-threaded runtime library is not supported anymore.
By default, the expat-static and expatw-static projects are set up
to link statically against the multithreaded run-time library,
so they will build libexpatMT.lib or libexpatwMT.lib files.
To build the other versions of the static library,
go to Project - Settings:
- specify a different RTL linkage on the C/C++ tab
under the category Code Generation.
- then, on the Library tab, change the output file name
accordingly, as described above
An application linking to the static libraries must
have the global macro XML_STATIC defined.