0

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

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

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

但是,当我构建控制台应用程序时,我可以很好地链接 libpng。

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

4

3 回答 3

3

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

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

file /opt/local/lib/libpng.dylib

如果你没有看到类似的东西:

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

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

于 2009-11-27T05:15:58.003 回答
1

这是你从网上下载的libpng.dylib吗?iPhone 开发者不得使用外部动态库。

我不知道 libpng 是否可用,但这里是如何检查。

  1. 在 Targets 列表中双击您的应用程序名称。
  2. 单击框架列表下的加号按钮并尝试找到它。不要忘记小写名称出现在“Z”之后。

如果它不存在,您将无法使用它。尝试找到一个静态库并从源代码编译它。它必须专门针对 iPhone Simulator (Intel) 和 iPhone (ARM) 的架构进行编译。

于 2009-11-27T02:19:28.627 回答
1

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

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

于 2009-11-27T02:30:54.827 回答