Включение одного проекта Xcode в другой - ошибки компоновщика
Я пытаюсь сделать это, и сталкиваюсь с проблемами. Родительскому проекту требуется доступ к классу SettingsViewController из дочернего проекта. Я поместил дочерний путь проекта в мои пути поиска заголовка. Все компилируется нормально, но я получаю ошибки компоновщика, как показано ниже:
Неопределенные символы: "_OBJC_METACLASS_$_SettingsViewController", на который ссылаются из: _OBJC_METACLASS_$_StatisticsViewController в StatisticsViewController.o "_OBJC_CLASS_$_SettingsViewController", на который ссылается из: обзор_контроллера_объявления _контроллера _контроллера _контроллера _контроллера _оконтроллера класса _ _ __roller символ (ы) не найден collect2: ld вернул 1 статус выхода
Как я могу это исправить?
3 ответа
Я предполагаю, что дочерний проект является статической библиотекой. В настоящее время ваш родительский проект знает, как найти файлы заголовков дочернего проекта (в противном случае он не будет компилироваться), но он не знает, что он должен ссылаться на файл библиотеки (.a) дочернего проекта.
Вероятно, вам следует добавить библиотечный файл в Targets> {your app}> Link Binary with Libraries. Кроме того, вам, вероятно, нужно добавить флаги компоновщика. -ObjC
и, возможно, -all_load
,
В сети есть много подробных описаний, например, создание статической библиотеки iPhone с помощью Xcode.
Обновить:
Если это не статическая библиотека, то это довольно странная настройка проекта. Лучшее, что вы можете сделать, это добавить общие файлы (.h и.m) в оба проекта. Затем они будут независимо скомпилированы в обоих проектах. Это должно работать, если у вас мало общих файлов.
Но я все равно рекомендую использовать настройки проекта со статической библиотекой. Это хорошо работает, если вы правильно настроили его. Я успешно использую это. И, как я уже говорил, в сети есть несколько хороших описаний, как его настроить.
Undefined symbols
ошибка компоновщика
1. Проверьте, добавили ли вы библиотеку или фреймворк
Project editor -> select a target -> General -> Linked Frameworks and Libraries
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries
2. Если вы пытаетесь использовать Swift-код из Objective-C
Добавьте пустой файл.swift в проект Objective-C. Когда Xcode спросит, нажмите Create Bridging Header
Я знаю, что это очень старый, но может быть полезным для других.
Вам нужно настроить включенный проект в Target Dependencies в "Фазы сборки", чтобы получить включенный проект для компиляции, а также вы должны добавить статическую библиотеку включенного проекта в "Link Binary with Libraries".
Нажмите на Target->Build Phases и настройте их.
Вы можете пропустить рамки. Хотя я не могу сказать, что вы опубликовали здесь.