我正在尝试将libpng库链接到我的iphone应用程序,并收到此错误:
ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture
当我为模拟器或设备构建时会发生这种情况。
但是,当我构建一个控制台应用程序时,我可以在libpng中链接就好了。
我做错了什么?是否需要使用不同的libpng.dylib进行iphone开发?
答案 0 :(得分:3)
你不能在iPhone上使用dylibs,你需要静态编译它。话虽如此,您看到的错误是单独的问题。
你是在开发Snow Leopard吗?如果是这样,那么你构建的默认库可能是64位。模拟器需要32位库。您可以通过运行文件进行检查:
file /opt/local/lib/libpng.dylib
如果您没有看到类似的内容:
(for architecture i386): Mach-O dynamically linked shared library i386
然后你将无法重复使用它。将库重建为静态i386库,您应该能够在模拟器中使用它。如果它是一个基于autoconf的构建this博客文章解释了如何进行构建并具有可以使用的shell脚本。
答案 1 :(得分:1)
这是您从互联网上下载的libpng.dylib吗? iPhone开发人员不允许使用外部动态库。
我不知道libpng是否可用,但这是检查方法。
如果不存在,则无法使用它。尝试查找静态库并从源代码编译它。它必须专门针对iPhone模拟器(Intel)和iPhone(ARM)的架构进行编译。
答案 2 :(得分:1)
正如Chris Long所说,iphone上没有libpng。你可以将它编译到你的项目中(如果它将为ARM编译),否则它没有工作。 这是一个主角:http://www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/
此外,对于记录,您可以使用以下方式将UIImage原样写为png:UIImagePNGRepresentation(UIImage *image)