симулятор iphone: & # 8220; libpng.dylib, файл не имеет необходимой архитектуры & # 8221;

StackOverflow https://stackoverflow.com/questions/1806469

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

file /opt/local/lib/libpng.dylib

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

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

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

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

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

<Ол>
  • Дважды щелкните имя своего приложения в списке целей.
  • Нажмите кнопку «Плюс» под списком «Рамочные» и попробуйте найти ее. Не забывайте, что строчные имена появляются после " Z ".
  • Если его там нет, вы не сможете его использовать. Попробуйте найти статическую библиотеку и скомпилируйте ее из исходного кода. Он должен быть скомпилирован специально для архитектуры iPhone Simulator (Intel) и iPhone (ARM).

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top