Добавил библиотеку в мой существующий проект, он успешно построен на симуляторе, но на реальном устройстве произошел сбой, я не могу запустить его на устройстве - PullRequest
0 голосов
/ 31 марта 2019

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

Помогает ли кто-нибудь мне в этом?

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

Я делаю одну вещь, когда добавляю свою библиотеку, на самом деле библиотека старая и поддерживает дуги, но нет, но мой проект ARC включен. Поэтому я устанавливаю значение флага для каждого файла библиотеки, например "-fno-objc-arc" в Target - -> Стадия сборки -> скомпилировать исходники, в которых дуга включена для этого конкретного файла. Возможно, проблема связана с этим, но я не могу это исправить.

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 Ответ

0 голосов
/ 01 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...