Добавлена библиотека к моему существующему проекту, он успешно собран на симуляторе, но получить не удалось на реальном устройстве, я не могу запустить его на устройстве

#objective-c #xcode

#objective-c #xcode

Вопрос:

Я добавил библиотеку в свой существующий проект Xcode, после чего она создается только на симуляторе и не может быть собрана на iPhone, выдавая мне ошибку «Неопределенные символы для архитектуры arm64:»

Кто-нибудь помогает мне в том же.

Я попробовал несколько способов избавиться от этого, но, к сожалению, ничего не работает. Я очищаю производные данные, выхожу из Xcode, перезагружаю свой ноутбук.

Я делаю одну вещь при добавлении моей библиотеки, на самом деле библиотека старая и поддерживает arc с включенной поддержкой, но мой проект ARC включен, поэтому я устанавливаю значение флага для каждого файла библиотеки, например «-fno-objc-arc» в Target -> Build phase -> compile sources, которые делают arc enabled false для этого конкретного файла. возможно, проблема связана с этим, но я не могу это исправить.

 ld: warning: directory not found for option '-L/Users/shashigupta/Git Projects/ClinMd/Common/PNFModule'
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_EASession", referenced from:
      objc-class-ref in libPNFPenLib.a(PenController.o)
  "_OBJC_CLASS_$_EAAccessoryManager", referenced from:
      objc-class-ref in libPNFPenLib.a(PenController.o)
  "_EAAccessoryDidConnectNotification", referenced from:
      -[_PenController initWithCoder:] in libPNFPenLib.a(PenController.o)
      -[_PenController init] in libPNFPenLib.a(PenController.o)
      -[_PenController dealloc] in libPNFPenLib.a(PenController.o)
  "_EAAccessoryDidDisconnectNotification", referenced from:
      -[_PenController initWithCoder:] in libPNFPenLib.a(PenController.o)
      -[_PenController init] in libPNFPenLib.a(PenController.o)
      -[_PenController dealloc] in libPNFPenLib.a(PenController.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
  

она должна быть успешно собрана на реальном устройстве, но только на симуляторе.

Комментарии:

1. Согласно сообщениям об ошибках, вы не подключаете библиотеку внешних аксессуаров Apple. (Также есть проблема с каталогом, который вы указали для связывания, но это может быть не связано с основной проблемой.)

Ответ №1:

Вы должны понимать, что симулятор и реальные устройства поддерживают разные архитектуры, и вам нужно создать свой ‘PFNModule’ в соответствии с архитектурой платформы, на которой вы работаете.

Я рекомендую вам прочитать эту статью, чтобы понять нюансы проблемы, с которой вы столкнулись: http://iosbrain.com/blog/2017/01/07/the-heartbreak-of-the-xcode-undefined-symbols-for-architecture-xxx-linker-message/