【问题标题】:libpng 1.5.10 error: dereferencing pointer to incomplete typelibpng 1.5.10 错误:取消引用指向不完整类型的指针
【发布时间】:2012-05-17 11:13:39
【问题描述】:
png_read_info (png_ptr, info_ptr);
{ 
    png_byte color_type = info_ptr->color_type;
    png_byte bit_depth  = info_ptr->bit_depth;
    ...

对于最后两行我得到

错误:取消引用指向不完整类型的指针

怎么了?在 libpng 1.4 中,这总是没问题的。

【问题讨论】:

  • 这意味着您没有包含正确的标题。
  • @Shahbaz png.h 包括在内。 -I/usr/include/libpng15 存在。

标签: c libpng


【解决方案1】:

png_info 结构已从 1.5.0 中的 png.h 中删除,现在您应该将此指针与 png_get_*png_set_* 函数一起使用。

libpng manual中指定:

png_info 结构旨在提供有关 PNG文件。曾几何时,png_info 的字段旨在 用户可以直接访问。然而,这往往导致 使用动态加载库的应用程序的问题,以及 结果是一组用于 png_info 的接口函数(png_get_*() 和 png_set_*() 函数)被开发,并直接访问 png_info 字段已弃用..

例如:

png_uint_32 height;
height = png_get_image_height( png_ptr,  info_ptr);

【讨论】:

  • 不存在函数png_get_widthpng_get_height。如何获得info_ptr->heightinfo_ptr->width
【解决方案2】:

如果您尝试设置不再可直接访问的 info_ptr 内容,请使用 png_set_IHDR()

libpng manual中指定

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2018-05-31
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2021-11-25
    相关资源
    最近更新 更多