Я завершаю библиотеку CometD с открытым кодом C, я подумал, что было бы неплохо открыть ее пользователям OSX/iOS, таким как я.
Чтобы облегчить работу разработчиков OSX/iOS, я хотел переключиться с статической библиотеки C на Xcode iOS Static Libary. Поэтому я следил за советами, найденными в сети, и создал статическую iOS-совместимую библиотеку.
Проблема в том, что каждый раз, когда я пытаюсь ее использовать, я получаю ошибку типа:
Undefined символы для архитектуры x86_64: ******, на который ссылаются: - ********** в *******. (*******. o)
Эта ошибка повторяется почти для каждой функции C, которая у меня есть в моей библиотеке.
Сначала я подумал, может быть, библиотека не x86_64 compatible
, пустая или действительно не имеет в ней символа x86_64.
Итак, я проверил с "lipo -info" в библиотеке, и вот ответ:
Чтобы действительно быть уверенным, что я также использовал "nm -arch x86_64" в библиотеке и пошел на выбор для нескольких функций undefined, о которых сообщает Xcode, как об ошибках. Я думал, что я ошибаюсь и не нахожу ничего, кроме как угадать, что?
Итак, мой вопрос:
Если символы присутствуют в совместимой с x86_64 библиотеке, почему Xcode вызывает эту ошибку? Даже если я компилирую библиотеку для всех типов arm */s, я все еще получаю эту ошибку x86_64.
Я ничего не осознаю, или я просто делаю это неправильно?
Ваши ответы всегда приветствуются.
Обновить (это ссылка на проект Xcode): https://github.com/GhostGumm/CometD-x86_64-issue
Обновление 2: г-н Троянфо обратил мое внимание на ссылку "Предупреждение, которое я имел при компиляции". Действительно, компоновщик, казалось, пропустил загрузку библиотеки, которая ищет каталог, который не существует. После перемещения библиотеки в нужный каталог, связав ее вручную, ошибка x86_64 исчезла.
К сожалению, проблема все еще присутствует. Сразу после успешной компиляции я попытался использовать lib, но, когда я "распределяю" и "init" свой основной класс, например:
ZetaFactory *Client = [[ZetaFactory alloc] init];
Ошибка x86_64 возвращается рев с подлинной жестокостью миллиарда солнц. Я разместил ссылку на проект Xcode, пожалуйста, не стесняйтесь протестировать его, так как у меня нет больше идей о том, как его исправить, но что еще более важно, почему и где это становится ошибкой.
Тем не менее, я продолжу расследование.