[英]Iphone - device - linker error
我已將libpng添加到我的應用程序中。 如果我為模擬器構建,一切都很好。 當我為設備構建應用程序時,我收到鏈接器錯誤:
Undefined symbols for architecture armv7: "_png_init_filter_functions_neon", referenced from: _png_read_filter_row in libpng-arm7-release.a(pngrutil.o)
我已經從源手動構建了libpng,對於模擬器和設備也是如此(只有更改了編譯目標)。 我試圖找到這個問題,但似乎沒有人發布有關此問題的任何內容。
我通過替換libpng
的pngpriv.h
中的第117-121行來“解決”這個問題:
# ifdef __ARM_NEON__
# define PNG_ARM_NEON_OPT 2
# else
# define PNG_ARM_NEON_OPT 0
# endif
通過
#define PNG_ARM_NEON_OPT 0
這會禁用ARM的NEON優化,這似乎是導致問題的原因。
這僅僅是一種解決方法,我沒有時間進一步研究問題的真正原因。
添加到PSyton的評論,這是我們解決它的方式。 編譯arm/*.c
文件。 但這只適用於Android。 對於iOS,我們還必須使用以下條目創建一個新的pnglibconf.h
:
#undef PNG_ARM_NEON_API_SUPPORTED
#undef PNG_ARM_NEON_CHECK_SUPPORTED
#define PNG_ARM_NEON_OPT 0
看看在libpng中定義的ARM,看起來它們當前有點錯誤,因為PNG_ARM_NEON_API_SUPPORTED
應該足以關閉NEON編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.