simulatore iphone: "libpng.dylib, il file non ha l'architettura richiesta"
Domanda
Sto cercando di collegare la libreria libpng alla mia applicazione per iPhone e ottengo questo errore:
ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture
Questo succede quando creo per il simulatore o il dispositivo.
Quando creo un'applicazione console, tuttavia, posso collegarmi in libpng bene.
Cosa sto facendo di sbagliato? Esiste un diverso libpng.dylib che devo usare per lo sviluppo di iPhone?
Soluzione
Come dice Chris Long, libpng non è disponibile su iPhone. Puoi compilarlo nel tuo progetto (se compilerà per ARM), altrimenti non funzionerà. Ecco un esempio: http: // www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/
Inoltre, per la cronaca, puoi scrivere un UIImage come png nativamente usando: UIImagePNGRepresentation (UIImage * image)
Altri suggerimenti
Non puoi usare dylibs su iPhone, dovrai compilarlo staticamente. Detto questo, l'errore visualizzato è un problema separato.
Stai sviluppando su Snow Leopard? In tal caso, la libreria predefinita che hai creato è probabilmente a 64 bit. Il simulatore richiede librerie a 32 bit. È possibile verificare eseguendo il file contro di esso:
file /opt/local/lib/libpng.dylib
Se non vedi qualcosa del tipo:
(for architecture i386): Mach-O dynamically linked shared library i386
Quindi non sarai in grado di riutilizzarlo. Ricostruisci la libreria come lib i386 statica e dovresti essere in grado di usarla nel simulatore. Se si tratta di una build basata su autoconf questo post sul blog spiega come eseguire una build e ha script di shell che puoi usare.
È un libpng.dylib scaricato da Internet? Gli sviluppatori di iPhone non possono utilizzare librerie dinamiche esterne.
Non so se libpng è disponibile, ma ecco come verificare.
- Fai doppio clic sul nome della tua app nell'elenco Target.
- Fai clic sul pulsante Più sotto l'elenco Frameworks e prova a trovarlo. Non dimenticare che i nomi minuscoli compaiono dopo " Z " ;.
Se non è lì, non puoi usarlo. Prova a trovare una libreria statica e compilarla dal sorgente. Deve essere compilato appositamente per l'architettura di iPhone Simulator (Intel) e iPhone (ARM).