未找到 libpng“png_set_longjmp_fn”

Posted

技术标签:

【中文标题】未找到 libpng“png_set_longjmp_fn”【英文标题】:libpng "png_set_longjmp_fn" not found 【发布时间】:2014-02-27 23:38:15 【问题描述】:

我正在使用来自 ubuntu 的 libpng,当我尝试编译一个 c++ 文件时,我得到了

对 `png_set_longjmp_fn' 的未定义引用

我使用的是 libpng 1.6.8 版

如果您有兴趣阅读代码,请告诉我,但这与我的错误代码无关。

提前谢谢你。

【问题讨论】:

【参考方案1】:

也许您使用 libpng-1.6.8 构建,但链接到早期版本的 libpng。 “png_set_longjmp_fn()”API 是在 libpng-1.4.x 中引入的。 Ubuntu 13:10 目前带有 libpng-1.2.49(参见 /usr/include/libpng12),它不提供 png_set_longjmp_fn()。

【讨论】:

【参考方案2】:

如果您在较旧的 Playstation Portable 程序上执行此操作,您的源目录中也可能有陈旧的库。运行 rm *.a 然后运行 ​​make clean 恰好为我修复了该错误消息。

【讨论】:

【参考方案3】:

就我而言,我的 ubuntu 附带了旧的 png 1.2,安装在 /usr 中。我在 /usr/local 中安装了 1.6.x。在我的 make 系统中,选择了默认包含 /usr/include 和链接 /usr/lib。在编译任何依赖新接口的软件时,都需要添加

CPPFLAGS="-I/usr/local/include $CPPFLAGS"
LDFLAGS="-L/usr/local/lib $LDFLAGS"

这会捡起来

grep png_set_longjmp_fn png.h
PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr,
      (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf))))

从较新的界面

【讨论】:

以上是关于未找到 libpng“png_set_longjmp_fn”的主要内容,如果未能解决你的问题,请参考以下文章

未找到 libpng.14.so.14 但已安装在 SUSE 上

在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误

libpng 中未解析的外部 png_set_longjmp_fn

libpng 错误:CgBI:未处理的关键块 xcode 7.3

libpng16.so.16:未定义对“inflateReset2@ZLIB_1.2.3.4”的引用

未找到Tesseract unicharset_extractor命令