88 lines
3.8 KiB
Plaintext
88 lines
3.8 KiB
Plaintext
|
|
VisualStudio instructions
|
|
|
|
libpng version 1.5.0beta31 - June 24, 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.
|
|
|
|
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.
|