#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/