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?

È stato utile?

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.

  1. Fai doppio clic sul nome della tua app nell'elenco Target.
  2. 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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top