Iphone - 设备 - 链接器错误

Mar*_*rry 7 objective-c linker-errors libpng

我已将libpng添加到我的应用程序中.如果我为模拟器构建,一切都很好.当我为设备构建应用程序时,我收到链接器错误:

    Undefined symbols for architecture armv7: "_png_init_filter_functions_neon", referenced from: _png_read_filter_row in libpng-arm7-release.a(pngrutil.o)
Run Code Online (Sandbox Code Playgroud)

我已经从源手动构建了libpng,对于模拟器和设备也是如此(只有更改了编译目标).我试图找到这个问题,但似乎没有人发布有关此问题的任何内容.

Gui*_*gis 9

我通过替换libpng's 中的第117-121行来"解决"这个问题pngpriv.h:

#  ifdef __ARM_NEON__
#     define PNG_ARM_NEON_OPT 2
#  else
#     define PNG_ARM_NEON_OPT 0
#  endif
Run Code Online (Sandbox Code Playgroud)

通过

#define PNG_ARM_NEON_OPT 0
Run Code Online (Sandbox Code Playgroud)

这会禁用ARM的NEON优化,这似乎是导致问题的原因.

这仅仅是一种解决方法,我没有时间进一步研究问题的真正原因.

  • 您也可以使用预处理程序标志"PNG_ARM_NEON_OPT = 0"进行编译,这样您就不必修改libpng源代码了 (3认同)
  • 您需要从arm文件夹编译*.c文件. (2认同)