simulador do iPhone: “libpng.dylib, arquivo não é da arquitetura necessária”
Pergunta
Eu estou tentando vincular a biblioteca libpng a minha aplicação do iPhone, e recebendo este erro:
ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture
Isso acontece quando eu construir para o simulador ou dispositivo.
Quando eu construir um aplicativo de console no entanto, posso ligar no libpng muito bem.
O que estou fazendo de errado? Existe uma libpng.dylib diferente eu preciso usar para o desenvolvimento iphone?
Solução
Como diz Chris Long, libpng não está disponível no iPhone. Você pode compilá-lo em seu projeto (se ele irá compilar para ARM), caso contrário ele não workums. Aqui é uma vantagem: http: // www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/
Além disso, para o registro, você pode escrever um UIImage como png nativamente usando: UIImagePNGRepresentation(UIImage *image)
Outras dicas
Você não pode usar dylibs no iPhone, você terá que compilá-lo estaticamente. Dito isto, o erro que você está vendo é uma questão separada.
Você está desenvolvendo no Snow Leopard? Se sim, então, em seguida, a biblioteca padrão que você construiu é provável de 64 bits. O simulador requer 32 bits bibliotecas. Você pode verificar executando arquivo contra ele:
file /opt/local/lib/libpng.dylib
Se você não vê algo como:
(for architecture i386): Mach-O dynamically linked shared library i386
Em seguida, você não será capaz de reutilizá-lo. Reconstruir a biblioteca como um lib i386 estática e você deve ser capaz de usá-lo no simulador. Se é uma compilação com base autoconf este post explica como fazer uma compilação e tem script shell que você pode usar.
É este um libpng.dylib você baixou da Internet? iPhone desenvolvedores não estão autorizados a usar bibliotecas dinâmicas externas.
Eu não sei se libpng está disponível, mas aqui está como verificar.
- Clique duas vezes em seu nome do aplicativo na lista de alvos.
- Clique no botão de adição abaixo da lista Frameworks e tentar encontrá-lo. Não se esqueça que os nomes de minúsculas aparecer após "Z".
Se ele não estiver lá, você não pode usá-lo. Tente encontrar uma biblioteca estática e compilá-lo a partir da fonte. Tem que ser compilado especificamente para a arquitetura do iPhone Simulator (Intel) e iPhone (ARM).