Re: [Mingw-users] Using mingw's libpng?
- Date: Mon, 04 Jul 2016 16:05:39 -0700
- From: mathog <mathog@xxxxxxxxxxx>
- Subject: Re: [Mingw-users] Using mingw's libpng?
On 02-Jul-2016 00:45, Eli Zaretskii wrote:
>> Date: Fri, 01 Jul 2016 18:13:23 -0700
>> From: mathog <mathog@xxxxxxxxxxx>
>> Are there some special command line switches needed to build a program
>> with the libpng dll in mingw?
> That should be stated in the pkg-config file that comes with the
> libpng distribution you are using.
It is. I meant in addition to that, because that set produced a binary
that failed as described. The config file's contents (the part that
all_libs="-lpng16 -lz "
>> Using this test program:
>> on a Centos box:
>> gcc -o png-test libpng-short-example.c -lpng -lz -lm
>> ./png-test testcase.png foo.png
>> and the program ran. It dumps the data pixel by pixel and copies the
>> from the first to the 2nd file.
>> However on Mingw with the same compile line and input data it does:
>> $ ./png-test testcase.png killme.png
>> This application has requested the Runtime to terminate it in an
>> Please contact the application's support team for more information.
>> libpng error: invalid after png_start_read_image or
>> [read_png_file] Error during read_image
> Before you make any conclusions, please try this build of libpng:
Exactly the same.
> The switches required to compile and link against the library are
> specified in the file lib/pkgconfig/libpng.pc included with this
> build, and all the dependency DLLs are also included.
It also fails with a brand new libpng build.
1. get source, expand, CD to that directory
All the rest are in an MSYS window:
3. gcc -o png-test libpng-short-example.c
-I/usr/local/include/libpng16 -lpng16 -lz -lm -L/usr/local/bin
4. Hide the libpng that was already present by
5. ./png-test testcase.png foo.png
This application has requested the Runtime to terminate it in an unusual
Please contact the application's support team for more information.
libpng error: invalid after png_start_read_image or png_read_update_info
[read_png_file] Error during read_image
Dependency walker shows that DOS/Windows cannot find libpng16.dll, since
tucked away in a location that only MSYS knows about (MSYS's path is:
The DOS path is:
and it fails the same way when run from DOS (after the libpng16.dll from
/usr/local/bin is copied to the same directory as png-test.
The programs that were built by the libpng make all seem to work - and
dependency walker doesn't show any of them linked to the DLL. Looking
at the log of the build one finds:
gcc -DHAVE_CONFIG_H -I. -I/usr/local/include -MT pngtest.o -MD -MP
-MF $depbase.Tpo -c -o pngtest.o pngtest.c &&\
/bin/sh ./libtool --tag=CC --mode=link gcc -I/usr/local/include
-L/usr/local/lib -o pngtest.exe pngtest.o libpng16.la -lz
libtool: link: gcc -I/usr/local/include -o .libs/pngtest.exe pngtest.o
-L/usr/local/lib ./.libs/libpng16.dll.a -lz -L/usr/local/lib
Dependency walker shows the final one as having a link to libpng16.dll,
and this version works if run from the top directory like:
The copy of libpng16.dll it is using (according to dependency walker,
probably MSYS does things differently) is the one in .libs, not the one
So, build pngtest.c (from libpng) using the simplest possible command
gcc -o /c/temp/pngtest pngtest.c -lpng16 -lz -lm
cp pngtest.png /c/temp
and it runs normally. It should not have. The dll it is supposedly
using from /ming/bin is still hidden. Hide the one in /usr/local/bin
too and then pngtest fails. UnHide (remove the __HIDE_) from the one in
/mingw/bin and pngtest works again.
So great, we have one set of programs which work exactly like they do
under linux (the test programs that come with libpng) and another set
that blow up mysteriously when linked to this library (the small test
program from my original post and the module from a much bigger package
which triggered this line of inquiry.)
Perhaps this is some version incompatibility between the code in the
ones that do not work and the current libpng? Check back on the Linux
systems I used, the one for the build of the larger package, and the one
for the smaller test program, are both using libpng1.2. Could be that
all I need to get the problem ones to work is to install that older
Manager, Sequence Analysis Facility, Biology Division, Caltech
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
MinGW-users mailing list
This list observes the Etiquette found at
We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated.
You may change your MinGW Account Options or unsubscribe at: