Simulador de iPhone: "libpng.dylib, el archivo no tiene la arquitectura requerida"

StackOverflow https://stackoverflow.com/questions/1806469

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy intentando vincular la biblioteca libpng a mi aplicación de iPhone y obtengo este error:

ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture

Esto sucede cuando compilo para el simulador o el dispositivo.

Sin embargo, cuando compilo una aplicación de consola, puedo enlazar en libpng muy bien.

¿Qué estoy haciendo mal? ¿Hay algún libpng.dylib diferente que deba usar para el desarrollo de iPhone?

¿Fue útil?

Solución

Como dice Chris Long, libpng no está disponible en el iPhone. Puede compilarlo en su proyecto (si se compilará para ARM), de lo contrario no funcionará. Aquí hay una pista: http: // www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/

También, para el registro, puede escribir un UIImage como png de forma nativa usando: UIImagePNGRepresentation (UIImage * image)

Otros consejos

No puedes usar dylibs en iPhone, tendrás que compilarlo de forma estática. Dicho esto, el error que está viendo es un problema aparte.

¿Estás desarrollando en Snow Leopard? Si es así, entonces es probable que la biblioteca predeterminada que construyes sea de 64 bits. El simulador requiere bibliotecas de 32 bits. Puede verificar ejecutando el archivo contra él:

file /opt/local/lib/libpng.dylib

Si no ves algo como:

(for architecture i386):    Mach-O dynamically linked shared library i386

Entonces no podrás reutilizarlo. Reconstruya la biblioteca como una biblioteca i386 estática y debería poder usarla en el simulador. Si es una compilación basada en autoconf esta publicación de blog explica cómo hacer una compilación y tiene un script de shell que puedes usar.

¿Es este un libpng.dylib que descargaste de Internet? Los desarrolladores de iPhone no pueden usar bibliotecas dinámicas externas.

No sé si libpng está disponible, pero aquí hay cómo verificarlo.

  1. Haga doble clic en el nombre de su aplicación en la lista de objetivos.
  2. Haz clic en el botón Más en la lista de Marcos e intenta encontrarlo. No olvide que los nombres en minúscula aparecen después de " Z " ;.

Si no está allí, no puedes usarlo. Intenta encontrar una biblioteca estática y compílala desde la fuente. Tiene que compilarse específicamente tanto para la arquitectura del iPhone Simulator (Intel) como para el iPhone (ARM).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top