LibPNG Windows, How to compile

Available prebuilt libraries

All prebuilt libraries are available in the php-libs repositories

For PHP suitable sources and up-to-date information see

The filename format is:

where x.y.z defines the version, vcversion which Visual C++ has been used and -asm tells if the ASM optimizations have been used or not (see the options below).

Building LibPng 1.2.35



LibPNG can be compiled using various modes. Only the following list can be used with PHP:

  • “libpng - Win32 DLL Release” based on “Win32 (x86) Dynamic-Link Library”
  • “libpng - Win32 DLL Debug” based on “Win32 (x86) Dynamic-Link Library”)
  • “libpng - Win32 DLL ASM Release” based on “Win32 (x86) Dynamic-Link Library”
  • “libpng - Win32 DLL ASM Debug” based on “Win32 (x86) Dynamic-Link Library”
  • “libpng - Win32 LIB Release” based on “Win32 (x86) Static Library”
  • “libpng - Win32 LIB Debug” based on “Win32 (x86) Static Library”
  • “libpng - Win32 LIB ASM Release” based on “Win32 (x86) Static Library”
  • “libpng - Win32 LIB ASM Debug” based on “Win32 (x86) Static Library”

PHP uses “libpng - Win32 LIB ASM Release” and “libpng - Win32 LIB ASM Debug” respectively for the normal and debug PHP builds

One of these option has to be used while calling the makefile.

The ASM versions do not work yet with Visual C++ 8 (VS2005) or later. We did not have the time to fix the .asm files. Contributions welcome (both for php and for the libpng project).

Download the libpng Makefile and dep file and remove the .txt extension.


This step describe the process for Visual C++ 6. It should work for 2k3/5/8 as well but it is not yet tested. However you can use the VC7.1 project files in the libpng archive if the libpng.mak fails.

Copy the make file to the project\vc6 directory To compile libpng, simply go to th proj==ects directory of the libpng source and run:

cd c:\build_php_deps\libpng1229\projects\
nmake /f libpng.mak CFG="libpng - Win32 LIB Release"  PHP_SDK_PATH="c:\php_sdk\"
If the Platform has changed between two different builds (win32 to x64 or x64 to win32), it is necessary to clean the builds before building a dllor a lib. If the objs have been built for a different platform you will get a linker error (machine does not match).

Install in the SDK

To be written

internals/windows/libs/libpng.txt · Last modified: 2013/02/21 15:00 by ab