88 lines
3.4 KiB
Plaintext
88 lines
3.4 KiB
Plaintext
Instructions for building libpng using Microsoft Visual Studio
|
|
==============================================================
|
|
|
|
Copyright (c) 2018,2022 Cosmin Truta
|
|
Copyright (c) 2010,2013,2015 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 a solution for building libpng under Microsoft
|
|
Visual Studio 2019. It may also work under earlier or later versions
|
|
of Visual Studio. You should be familiar with Visual Studio before
|
|
using this solution.
|
|
|
|
Initial preparations
|
|
--------------------
|
|
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.
|
|
|
|
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.)
|
|
|
|
Linking your application
|
|
------------------------
|
|
Normally you should link against the 'release' configuration. This
|
|
builds a DLL for libpng with the default runtime options used by Visual
|
|
Studio. In particular the runtime library is the "MultiThreaded DLL"
|
|
version. If you use Visual Studio defaults to build your application,
|
|
you should have no problems.
|
|
|
|
If you don't use the Visual Studio defaults your application must still
|
|
be built with the default runtime option (/MD). If, for some reason,
|
|
it is not then your application will crash inside libpng16.dll as soon
|
|
as libpng tries to read from a file handle you pass in.
|
|
|
|
If you do not want to use the DLL, and prefer static linking instead,
|
|
you may choose the 'release library' configuration. This is built with
|
|
a non-standard runtime library - the "MultiThreaded" version. When you
|
|
build your application, it must be compiled with this option (/MT),
|
|
otherwise it will not build (if you are lucky) or it will crash (if you
|
|
are not.) See the WARNING file that is distributed with this README.
|
|
|
|
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 unless you have heap corruption
|
|
problems that you can't track down.)
|
|
|
|
The debug build of libpng is minimally supported. Support for debug
|
|
builds of zlib is also minimal. Please keep this in mind, if you want
|
|
to use it.
|
|
|
|
WARNING
|
|
-------
|
|
Libpng 1.6.x does not use the default run-time library when building
|
|
static library builds of libpng; instead of the shared DLL runtime, it
|
|
uses a static runtime. If you need to change this, make sure to change
|
|
the setting on all the relevant projects:
|
|
|
|
libpng
|
|
zlib
|
|
all the test programs
|
|
|
|
The runtime library settings for each build are as follows:
|
|
|
|
Release Debug
|
|
DLL /MD /MDd
|
|
Library /MT /MTd
|
|
|
|
Also, be sure to build libpng, zlib, and your project, all for the same
|
|
platform (e.g., 32-bit or 64-bit).
|