2013-09-30 23 views
6

Uygulamamıza libpng ekledim. Simülatör için oluşturursam her şey yolunda. Ben (sadece derleme değiştirilen hedefiyle) simülatörü ve cihaz için kaynak, aynı şekilde el libpng'yi inşa gelmişIphone - device - linker hatası

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

: Ben cihaz için uygulama oluşturmak, ben bağlayıcı hata var. Bu sorunu bulmaya çalıştım ama kimse bu sorun hakkında bir şey yazmıyor gibi görünüyor.

cevap

7

Ben satırları 117-121 değiştirerek bu "çözüldü" libpng 'ın pngpriv.h:

# ifdef __ARM_NEON__ 
#  define PNG_ARM_NEON_OPT 2 
# else 
#  define PNG_ARM_NEON_OPT 0 
# endif 

#define PNG_ARM_NEON_OPT 0 

Bu nedeni gibi görünüyor ARM NEONU optimizasyonları, devre dışı bırakır tarafından sorun.

Bu sadece bir çözümdür, ancak sorunun gerçek nedenini daha fazla araştırmak için zamanım olmadı.

+2

Kol klasöründen * .c dosyalarını derlemeniz gerekir. – PSyton

+3

sadece önişlemci bayrağı "PNG_ARM_NEON_OPT = 0" ile derleyebilirsiniz, böylece libpng kaynağını değiştirmek zorunda kalmazsınız. – bitwise

+0

.h'de değişiklik yaptıktan sonra * .c derlememiz gerekir mi ve nasıl? –

0

PSyton'un yorumuna eklemek, nasıl çözdük. arm/*.c dosyalarını derleyin. Ancak bu sadece Android için çalışır. iOS için, ayrıca girdileri ile yeni pnglibconf.h oluşturmak zorunda: şu anda biraz arabası olduğu gibi

#undef PNG_ARM_NEON_API_SUPPORTED 
#undef PNG_ARM_NEON_CHECK_SUPPORTED 
#define PNG_ARM_NEON_OPT 0 

libpng içinde tanımlayan ARM bakıldığında PNG_ARM_NEON_API_SUPPORTED kapalı NEON derleme çevirmek için yeterli olması gerektiği gibi görünüyor .

İlgili konular