Click here to Skip to main content
11,721,385 members (85,409 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C++ graphics image
I want to load a png image into an array. I was told to download the CImg library.
The problem is that it uses the pngLib which I don't know how to link.
I downloaded some files from the libpng homepage, but adding the directory to additional include directories, the h files to the project and copying the zlib1.dll to the exe directory is not enough.

I get an error when I try to use the class:

myFloatImg (300,200);
string testFilename="testImage.png";
myFloatImg.load (filename.c_str());

the error:
c:\...\cimg.h(34670): error C3861: 'png_set_expand_gray_1_2_4_to_8': identifier not found

I guess it's a call to a function from pngLib
What should I do?
*openCV is not an option

Posted 13-Feb-12 13:09pm
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

The issue is not a library linking issue.
You're probably missing some header file (#include) or are not using a namespace name (using namespace).

What are you trying to do with the image?
You could try to use GDI+.
GDI+ has several classes like Image, Graphics etc. that can do a lot of image manipulation and it supports PNG too.
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

I should have link the objs of pngLib and zlib in additional dependences.
They should be added there as "pnglib.lib, zlib.lib"

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 510
1 OriginalGriff 249
2 Mika Wendelius 170
3 F-ES Sitecore 80
4 cyycoish 70
0 Sergey Alexandrovich Kryukov 2,209
1 OriginalGriff 969
2 F-ES Sitecore 660
3 Maciej Los 609
4 Richard MacCutchan 560

Advertise | Privacy | Mobile
Web04 | 2.8.150901.1 | Last Updated 16 Feb 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100