Включение одного проекта Xcode в другой - ошибки компоновщика - PullRequest
1 голос
/ 25 декабря 2010

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

Неопределенные символы: "_OBJC_METACLASS _ $ _ SettingsViewController", на который ссылаются из: _OBJC_METACLASS _ $ _ StatisticsViewController в StatisticsViewController.o "_OBJC_cedConsoleobjc-class-ref-to-SettingsViewController в SelectionViewController.o _OBJC_CLASS _ $ _ StatisticsViewController в StatisticsViewController.o ld: символ (ы) не найден collect2: ld вернул 1 состояние выхода

Как это исправить?

Ответы [ 3 ]

2 голосов
/ 25 декабря 2010

Я предполагаю, что дочерний проект является статической библиотекой.В настоящее время ваш родительский проект знает, как найти файлы заголовков дочернего проекта (в противном случае он не будет компилироваться), но он не знает, что ему нужно связать файл библиотеки (.a) дочернего проекта.

Вероятно, вам следует добавить библиотечный файл в Targets> {your application}> Link Binary with Libraries .Кроме того, вам, вероятно, нужно добавить флаги компоновщика -ObjC и, возможно, -all_load.

. В сети есть много подробных описаний, например, Сборка статической библиотеки iPhone с Xcode .

Обновление:

Если это не статическая библиотека, то это довольно странная настройка проекта.Лучшее, что вы можете сделать, это добавить общие файлы (.h и .m) в оба проекта.Затем они будут независимо скомпилированы в обоих проектах.Это должно работать, если у вас мало общих файлов.

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

0 голосов
/ 10 июня 2012

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

Вам нужно настроить включенный проект в Target Dependencies в «Фазы сборки», чтобы получить включенный проект для компиляции, а также вы должны добавить статическую библиотеку включенного проекта в «Link Binary with Libraries».

Нажмите на свою цель-> Фазы сборки и настройте их.

0 голосов
/ 25 декабря 2010

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

...