2012-05-02 247 views
-1

m trying to compile source code, but receive: undefined reference to png_read_info' 文件标题: 的#include “PngImage.hh”未定义的参考`png_read_info '

#include <png.h> 

#include <cstdio> 
#include <csetjmp> 
#include <cstring> 

我的编译器设置: -I/usr/include目录/ libxml2的-I在/ usr/include/osmpbf -O0 -g3 -Wall -c -fmessage-length = 0 -lpng

我在做什么错了?

更新: 我真的试图链接: -I/USR /包含/ libxml2的-I/USR /包含/ osmpbf -O0 -g3 -Wall -c -fmessage长度= 0 -L的/ usr /包括/ libpng -lpng

库libpng已经安装。没有什么变化,我再次收到: 未定义的参考topng_read_info

固定。我的错误。我在eclipse中设置编译器设置而不是链接器设置。谢谢大家的回答

+0

你链接到的libpng的? –

回答

3

你没有链接到libpng。将-L/path/to/dir_containing/libpng -lpng添加到您的链接步骤。

+0

我正在尝试链接:-I/usr/include/libxml2 -I/usr/include/osmpbf -O0 -g3 -Wall -c -fmessage-length = 0 -L/usr/include/libpng -lpng Library libpng已经安装。没有什么变化我再次收到:undefined reference topng_read_info – native1989

+0

你说'-L/usr/include/libpng'。这些是头文件。你想使用'-I'而不是-L'作为包含路径('-I/usr/include/libpng',假设该目录包含'png.h')。您仍然需要对包含'libpng.so'(或'libpng.a','libpng.dll'等)的目录使用'-L',然后使用'-lpng'链接库。 '-L'表示要在哪里查找要链接的库,'-l'是要链接的库。 – greg

0

你得到“未定义的引用”的问题时,编译器无法找到链接到一个对象,所以你会错过一个包含或设置库路径所以尽量什么格雷格说和检查,如果你错过了一些包括