Ошибка ссылки отсутствующей библиотеки при выполнении Product > Build For Archiving в Xcode 4

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

При выполнении Project > Build For Running, а затем Project > Run ошибок нет, и приложение работает на моем iPhone, как и ожидалось.

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

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

Релиз-iphoneos/ConcordeLib.build/ Объекты нормальный / ARMv6/libConcordeLib.a
Релиз-iphoneos/ConcordeLib.build/ Объекты нормальный / ARMv7/libConcordeLib.a
Релиз-iphoneos/QSoptLib.build/ Объекты нормальный / ARMv6/libQSoptLib.a
Релиз-iphoneos/QSoptLib.build/ Объекты нормальный / ARMv7/libQSoptLib.a
Выпуск-iphoneos/libConcordeLib.a
Выпуск-iphoneos/libQSoptLib.a

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

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

1 ответ

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

Перейдите в Product > Edit Scheme и настройте профиль для использования существующего профиля распространения, чтобы устранить ошибку ссылки.

Другие вопросы по тегам