2 VisualStudio instructions
4 libpng version 1.4.4 - September 23, 2010
6 Copyright (c) 1998-2010 Glenn Randers-Pehrson
8 This code is released under the libpng license.
9 For conditions of distribution and use, see the disclaimer
12 This directory contains support for building libpng under MicroSoft
13 VisualStudio 2010. It may also work under later versions of VisualStudio.
14 You should be familiar with VisualStudio before using this directory.
16 This is a slightly modified copy of the 'vstudio' solution from libpng
17 1.5; it is intended to provide compatibility for libpng 1.4 with later
18 releases of zlib (from 1.2.4) and to provide a migration aid for 1.5.
20 A 'VB' DLL is no longer produced - use the standard 'Release' DLL.
24 You should install the 'official' build of zlib on your system - follow the
25 instructions provided on http://www.zlib.net. When a new release is being
26 made of zlib the instructions disappear for a while until the new official
27 build is available. You will have to wait.
29 You must enter some information in zlib.props before attempting to build
30 with this 'solution'. Please read and edit zlib.props first. You will
31 probably not be familiar with the contents of zlib.props - do not worry,
32 it is mostly harmless.
34 Make sure that your official build layout matches the requirements listed
35 in zlib.props. Prior to zlib-1.2.4 the official build (1.2.3) placed
36 include and library files in different directories - if you find this
37 has happened just put them all in the same directory.
39 This is all you need to do to build the 'release' and 'release library'
44 The release configurations default to /Ox optimization. Full debugging
45 information is produced (in the .pdb), but if you encounter a problem the
46 optimization may make it difficult to debug. Simply rebuild with a lower
47 optimization level (e.g. /Od.)
51 You have enough information to build a working application.
53 Debug versions have limited support
54 ===================================
55 This solution includes limited support for debug versions of libpng. You
56 do not need these unless your own solution itself uses debug builds (it is
57 far more effective to debug on the release builds, there is no point building
58 a special debug build.)
60 If, despite the previous paragraph, you still feel you need a debug build you
61 will have to download the zlib source as well (http://www.zlib.net) and include
62 the directory where you unpack it in zlib.props. This solution will then be
63 able to build a minimal zlib sufficient for libpng. This build is only
64 suitable for making a debug libpng.
66 The debug build of libpng is minimally supported. Support for debug builds of
67 zlib is also minimal. You really don't want to do this.
69 This solution only supports the Multi-Threaded DLL C Runtime
70 ============================================================
71 If you examine the solution you will find that it very deliberately lists
72 exactly which MicroSoft DLLs it is linking against. It explicitly links
73 against msvcrt.lib. The debug version links against msvcrtd.lib (this is
74 why it is a debug version - it's nothing to do with having any special
75 debug support, it doesn't).
77 These versions of the MicroSoft C runtime correspond to the compiler flags
78 /MD (release) and /MDd (debug) - the "Multi-Threaded DLL" implementation of the
81 If you need to change this then you will have to make sure that both the
82 compiler flags and the ".lib" in the linker dependences match up. Fortunately
83 neither zlib nor libpng require libraries other than a C runtime and
86 You cannot pass (FILE*) objects from a different runtime (including msvcrtd
87 to msvcrt) to libpng. If you do then your program will crash within libpng
88 when it first makes a file read or write call.
90 It is likely if you have read this far that you have found you can't avoid
91 having multiple C runtimes in your program. This is OK, it does work, but
92 you will have to implement the libpng file read/write callbacks rather than
93 using the internal libpng default. This is easy.