summaryrefslogtreecommitdiff
path: root/expat/win32/README.txt
blob: c58d29ab74b8834b652d33880b3b43eccd7ef7d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

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.