
VisualStudio instructions

libpng version 1.4.3 - June 26, 2010

Copyright (c) 1998-2010 Glenn Randers-Pehrson

This code is released under the libpng license.
For conditions of distribution and use, see the disclaimer
and license in png.h

This directory  contains support for building libpng under MicroSoft
VisualStudio 2010.  It may also work under later versions of VisualStudio.
You should be familiar with VisualStudio before using this directory.

This is a slightly modified copy of the 'vstudio' solution from libpng
1.5; it is intended to provide compatibility for libpng 1.4 with later
releases of zlib (from 1.2.4) and to provide a migration aid for 1.5.

A 'VB' DLL is no longer produced - use the standard 'Release' DLL.

Initial preparations
====================
You should install the 'official' build of zlib on your system - follow the
instructions provided on http://www.zlib.net.  When a new release is being
made of zlib the instructions disappear for a while until the new official
build is available.  You will have to wait.

You must enter some information in zlib.props before attempting to build
with this 'solution'.  Please read and edit zlib.props first.  You will
probably not be familiar with the contents of zlib.props - do not worry,
it is mostly harmless.

Make sure that your official build layout matches the requirements listed
in zlib.props.  Prior to zlib-1.2.4 the official build (1.2.3) placed
include and library files in different directories - if you find this
has happened just put them all in the same directory.

This is all you need to do to build the 'release' and 'release library'
configurations.

Debugging
=========
The release configurations default to /Ox optimization.  Full debugging
information is produced (in the .pdb), but if you encounter a problem the
optimization may make it difficult to debug.  Simply rebuild with a lower
optimization level (e.g. /Od.)

Stop reading here
=================
You have enough information to build a working application.

Debug versions have limited support
===================================
This solution includes limited support for debug versions of libpng.  You
do not need these unless your own solution itself uses debug builds (it is
far more effective to debug on the release builds, there is no point building
a special debug build.)

If, despite the previous paragraph, you still feel you need a debug build you
will have to download the zlib source as well (http://www.zlib.net) and include
the directory where you unpack it in zlib.props.  This solution will then be
able to build a minimal zlib sufficient for libpng.  This build is only
suitable for making a debug libpng.

The debug build of libpng is minimally supported.  Support for debug builds of
zlib is also minimal.  You really don't want to do this.

This solution only supports the Multi-Threaded DLL C Runtime
============================================================
If you examine the solution you will find that it very deliberately lists
exactly which MicroSoft DLLs it is linking against.  It explicitly links
against msvcrt.lib.  The debug version links against msvcrtd.lib (this is
why it is a debug version - it's nothing to do with having any special
debug support, it doesn't).

These versions of the MicroSoft C runtime correspond to the compiler flags
/MD (release) and /MDd (debug) - the "Multi-Threaded DLL" implementation of the
C runtime library.

If you need to change this then you will have to make sure that both the
compiler flags and the ".lib" in the linker dependences match up.  Fortunately
neither zlib nor libpng require libraries other than a C runtime and
kernel32.

You cannot pass (FILE*) objects from a different runtime (including msvcrtd
to msvcrt) to libpng.  If you do then your program will crash within libpng
when it first makes a file read or write call.

It is likely if you have read this far that you have found you can't avoid
having multiple C runtimes in your program.  This is OK, it does work, but
you will have to implement the libpng file read/write callbacks rather than
using the internal libpng default.  This is easy.
