Ошибка ссылки отсутствующей библиотеки при выполнении Product> Build For Archiving в Xcode 4 - PullRequest
1 голос
/ 15 мая 2011

У меня есть приложение для iPhone, которое использует две статические библиотеки

При выполнении Проект> Сборка для запуска , а затем Проект> Выполнить ошибок нет, иприложение работает, как и ожидалось, на моем iPhone.

При выполнении Project> Build For Archiving Я получаю ошибку ссылки для одной из библиотек, но не для другой ld: библиотека не найдена для -lConcordeLib

Когда япосмотрите в файловой системе созданные * .a файлы, которые я вижу:

Release-iphoneos / ConcordeLib.build / Objects-normal / armv6 / libConcordeLib.a
Release-iphoneos / ConcordeLib.build / Objects-normal / armv7 / libConcordeLib.a
Release-iphoneos / QSoptLib.build / Objects-normal / armv6 / libQSoptLib.a
Release-iphoneos / QSoptLib.build / Objects-normal / armv7 / libQSoptLib.a
Release-iphoneos / libConcordeLib.a
Release-iphoneos / libQSoptLib.a

в каталоге DerivedData для компиляции.Это выглядит точно так же, как файлы, созданные при успешном выполнении Project> Build For Running , который генерирует те же файлы в Debug-iphoneos.

Я вычистил производные данные, остановил и перезапустил XCodeи все равно получаю ту же ошибку.

1 Ответ

2 голосов
/ 18 мая 2011

Я внимательно посмотрел на команду ld и увидел, что она создает файлы в ... / Build / Intermediates / NavConcorde.build / AdHoc-iphoneos /. Профиль AdHoc фактически больше не существует, поэтому неудивительно, что произошла ошибка. Я не понимаю, почему это проявилось как ошибка ссылки. Библиотеки в Debug и Release должны зависать от другой компиляции.

Перейдите к Продукт> Изменить схему и настройте профиль для использования существующего профиля распространения. Устранена ошибка связи.

...