Ошибки Xcode Mach-O Linker с 64-битным симулятором

Я разрабатываю приложение для iOS в Xcode. Он скомпилировался и отлично запустился в обычном симуляторе, но когда я переключил устройство симулятора на 64-разрядное, произошел сбой с 13 новыми предупреждениями и 37 новыми ошибками, все из которых связаны (я думаю) с внешней библиотекой, которую я использую. называется ObjectiveDDP(https://github.com/boundsj/ObjectiveDDP). У людей были похожие проблемы, но, насколько я понимаю, они якобы были исправлены в недавно выпущенном обновлении фреймворка, но с моей стороны это обновление бесполезно. Второй фреймворк, который я использую, — SocketRocket (https://github.com/square/SocketRocket). , но я не думаю, что это виновник вывода Xcode.

Кроме того, ясно, что многие люди сталкивались с такими ошибками Mach-O из-за фреймворков, несовместимых с 64-разрядными версиями. Однако я чувствую, что это проблема с организацией моих файлов. При этом я также считаю, что главная проблема заключается в следующем: Ignoring file /path/to/project/ObjectiveDDP/libcrypto.a, missing required architecture x86_64 in file /path/to/project/ObjectiveDDP/libcrypto.a. Есть ли способ исправить эту проблему в этом файле, добавив эту архитектуру? В ответ на аналогичный вопрос я попытался изменить архитектуру настроек сборки на Standard architectures(armv7, armv7s, arm64) и перепроверил, все ли другие зависимости соблюдены.

Вот часть ошибки:

Undefined symbols for architecture x86_64:
  "_BN_CTX_free", referenced from:
      _srp_verifier_new in srp.o
      _srp_user_start_authentication in srp.o
      _meteor_user_generate_kgx in srp.o
      _meteor_user_generate_aux in srp.o
      _meteor_user_generate_S_string in srp.o
  "_BN_CTX_new", referenced from:
      _srp_verifier_new in srp.o
      _srp_user_start_authentication in srp.o
      _meteor_user_generate_kgx in srp.o
      _meteor_user_generate_aux in srp.o
      _meteor_user_generate_S_string in srp.o
      _srp_user_process_meteor_challenge in srp.o
  "_BN_add", referenced from:
      _srp_verifier_new in srp.o
      _meteor_user_generate_aux in srp.o
  "_BN_bin2bn", referenced from:
      _srp_verifier_new in srp.o
      _H_nn in srp.o
      _meteor_user_generate_u in srp.o
      _meteor_user_generate_x in srp.o
      _meteor_user_generate_k in srp.o
      _meteor_user_generate_M_string in srp.o
      _meteor_user_generate_HAMK in srp.o
      ...

И скриншот того, как выглядит ошибка в Xcode:

После моего исследования мне все еще интересно, является ли это просто проблемой симулятора, и она разрешится сама собой при тестировании на физическом iPhone 5S, а также просто как я могу избавиться от этих ошибок? Что-нибудь здесь указывает на проблему организации файла? Два других предупреждения:

ld: предупреждение: каталог не найден для параметра «-L/путь/к/месту/имя_проекта/имя_проекта/ObjectiveDDP» ld: предупреждение: каталог не найден для параметра «-L/путь/к/месту/имя_проекта/SocketRocket/ObjectiveDDP»

И этих двух путей не существует, но я думал, что исправил это, удалив папки, переместив их в корзину и заново добавив.

Мы будем очень признательны за любое понимание.


person zch    schedule 19.03.2014    source источник


Ответы (1)


Похоже, что libcrypto.a, включенный в ваш пакет ObjectiveDPP, не скомпилирован для 64-битной архитектуры. Если вам нужна 64-битная версия, этот ответ, похоже, поможет вам получить этот файл:

Где я могу найти статическую библиотеку openssl iOS 7 libcrypto.a и libssl.a для архитектуры arm64

Если нет, вы можете просто скомпилировать собственное приложение без 64-битной поддержки.

64-битная версия была добавлена ​​к настройкам по умолчанию в Xcode 5.1. Вы можете установить свою архитектуру в своем собственном проекте на $(ARCHS_STANDARD_32_BIT), чтобы удалить ее и вернуться к поведению 5.0.

person z00b    schedule 19.03.2014
comment
Успешно справился. Мне не нужна 64-битная поддержка, поэтому, как вы предложили, я изменил архитектуру. Спасибо за это разъяснение; Я думаю, что меня смутило то, что я думал, что мне нужно поддерживать 64-битную версию для iPhone 5S. Ваше здоровье! - person zch; 19.03.2014