2009-11-27 5 views
0

Je suis en train de relier la bibliothèque libpng à mon application iPhone, et d'obtenir cette erreur:simulateur iphone: « libpng.dylib, fichier n'est pas nécessaire de l'architecture »

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

Cela se produit lorsque je construis pour le simulateur ou l'appareil.

Lorsque je compile une application console, je peux très bien lier dans libpng.

Qu'est-ce que je fais mal? Existe-t-il un libpng.dylib différent que je devrais employer pour le développement d'iphone?

Répondre

1

Comme le dit Chris Long, libpng n'est pas disponible sur l'iPhone. Vous pouvez le compiler dans votre projet (s'il est compilé pour ARM), sinon il n'y a pas de workums. Voici une avance: http://www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/

En outre, pour l'enregistrement, vous pouvez écrire un UIImage en utilisant nativement .png: UIImagePNGRepresentation(UIImage *image)

+0

Ce lien a une libpng.a qui contient à la fois les architectures i386 et arm, ce dont j'ai exactement besoin. Malheureusement, lorsque j'utilise ce fichier, il me donne toujours la même erreur que ci-dessus, même en faisant référence à "/opt/local/lib/libpng.dylib" que j'ai retiré de mon projet. – abtree

1

Est-ce un fichier libpng.dylib que vous avez téléchargé sur Internet? Les développeurs iPhone ne sont pas autorisés à utiliser des bibliothèques dynamiques externes.

Je ne sais pas si libpng est disponible, mais voici comment vérifier.

  1. Double-cliquez sur le nom de votre application dans la liste des cibles.
  2. Cliquez sur le bouton Plus sous la liste des cadres et essayez de le trouver. N'oubliez pas que les noms en minuscules apparaissent après "Z".

Si ce n'est pas le cas, vous ne pouvez pas l'utiliser. Essayez de trouver une bibliothèque statique et compilez-la à partir de la source. Il doit être compilé spécifiquement pour l'architecture de l'iPhone Simulator (Intel) et de l'iPhone (ARM).

+0

C'est le fichier libpng.dylib qui a été installé à partir de macports. J'ai essayé de relier statiquement aussi sans succès. Libpng n'est pas dans cette liste de frameworks disponibles. – abtree

3

Vous ne pouvez pas utiliser dylibs sur iPhone, vous aurez besoin de compiler de manière statique. Cela dit, l'erreur que vous voyez est une question distincte.

Développez-vous sur Snow Leopard? Si c'est le cas, la bibliothèque par défaut que vous avez construite est probablement 64 bits. Le simulateur nécessite des bibliothèques 32 bits. Vous pouvez vérifier par fichier en cours d'exécution contre:

file /opt/local/lib/libpng.dylib 

Si vous ne voyez pas quelque chose comme:

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

Ensuite, vous ne serez pas en mesure de le réutiliser. Reconstruisez la bibliothèque en tant que bibliothèque i386 statique et vous devriez être capable de l'utiliser dans le simulateur. S'il s'agit d'une publication basée sur autoconf this blog explique comment faire une construction et a un script shell que vous pouvez utiliser.

+0

Merci! Je suis sur Snow Leopard, et ma libpng est en effet 64 bits. Cela ne m'a même pas traversé l'esprit. Tout cela a beaucoup plus de sens maintenant. – abtree

Questions connexes