我正在尝试将libpng库链接到我的iphone应用程序,并收到此错误:

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

当我为模拟器或设备构建时会发生这种情况。

但是,当我构建一个控制台应用程序时,我可以在libpng中链接就好了。

我做错了什么?是否需要使用不同的libpng.dylib进行iphone开发?

有帮助吗?

解决方案

正如Chris Long所说,iphone上没有libpng。你可以将它编译到你的项目中(如果它将为ARM编译),否则它没有工作。 这是一个主角: http:// www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/

此外,对于记录,您可以使用以下方式将UIImage写为png: UIImagePNGRepresentation(UIImage * image)

其他提示

你不能在iPhone上使用dylibs,你需要静态编译它。话虽如此,您看到的错误是单独的问题。

你是在开发Snow Leopard吗?如果是这样,那么你构建的默认库可能是64位。模拟器需要32位库。您可以通过运行文件进行检查:

file /opt/local/lib/libpng.dylib

如果您没有看到类似的内容:

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

然后你将无法重复使用它。将库重建为静态i386库,您应该能够在模拟器中使用它。如果它是基于autoconf的构建这篇博客文章解释了如何进行构建并具有shell脚本你可以使用。

这是您从互联网上下载的libpng.dylib吗? iPhone开发人员不允许使用外部动态库。

我不知道libpng是否可用,但这是检查方法。

  1. 在“目标”列表中双击您的应用名称。
  2. 单击“框架”列表下的“加号”按钮,尝试查找它。不要忘记小写名称出现在“Z”之后。
  3. 如果不存在,则无法使用它。尝试查找静态库并从源代码编译它。它必须专门针对iPhone模拟器(Intel)和iPhone(ARM)的架构进行编译。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top