iphone simulator: "libpng.dylib, файл не имеет необходимой архитектуры" - PullRequest
0 голосов
/ 27 ноября 2009

Я пытаюсь связать библиотеку libpng с моим приложением iphone и получаю эту ошибку:

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

Это происходит, когда я строю для симулятора или устройства.

Тем не менее, когда я создаю консольное приложение, я могу нормально связываться с libpng.

Что я делаю не так? Есть ли другой libpng.dylib, который мне нужно использовать для разработки iphone?

Ответы [ 3 ]

3 голосов
/ 27 ноября 2009

Вы не можете использовать dylibs на iPhone, вам нужно будет скомпилировать его статически. Сказав это, ошибка, которую вы видите, является отдельной проблемой.

Вы разрабатываете на Snow Leopard? Если это так, то используемая вами библиотека по умолчанию, вероятно, будет 64-битной. Симулятор требует 32-битных библиотек. Вы можете проверить, запустив файл против него:

file /opt/local/lib/libpng.dylib

Если вы не видите что-то вроде:

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

Тогда вы не сможете использовать его повторно. Перестройте библиотеку как статическую библиотеку i386, и вы сможете использовать ее в симуляторе. Если это сборка на основе autoconf , то в этом блоге объясняется, как выполнить сборку, и имеется сценарий оболочки, который вы можете использовать.

1 голос
/ 27 ноября 2009

Как говорит Крис Лонг, libpng недоступен на iphone. Вы можете скомпилировать его в свой проект (если он будет скомпилирован для ARM), в противном случае он не требует рабочей силы Вот пример: http://www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/

Кроме того, для записи, вы можете написать UIImage как png, используя: UIImagePNGRepresentation(UIImage *image)

1 голос
/ 27 ноября 2009

Это libpng.dylib, который вы скачали из Интернета? Разработчики iPhone не могут использовать внешние динамические библиотеки.

Я не знаю, доступна ли libpng, но вот как это проверить.

  1. Дважды щелкните имя вашего приложения в списке целей.
  2. Нажмите кнопку «Плюс» под списком «Рамочные» и попробуйте найти ее. Не забывайте, что строчные имена появляются после "Z".

Если его там нет, вы не сможете его использовать. Попробуйте найти статическую библиотеку и скомпилируйте ее из исходного кода. Он должен быть скомпилирован специально для архитектуры iPhone Simulator (Intel) и iPhone (ARM).

...