Неопределенные символы для архитектуры armv7: "_SCNetworkReachabilityCreateWithAddress"

Правильно, это стало правильной болью, я смотрю на это в течение 2 дней и не могу решить это. Вот ошибка, которую я получаю.

Undefined symbols for architecture armv7:
"_SCNetworkReachabilityCreateWithAddress", referenced from:
  +[Reachability reachabilityWithAddress:] in Reachability.o
"_SCNetworkReachabilityCreateWithName", referenced from:
  +[Reachability reachabilityWithHostName:] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
  -[Reachability stopNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
  -[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilitySetCallback", referenced from:
  -[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityGetFlags", referenced from:
  -[Reachability connectionRequired] in Reachability.o
  -[Reachability currentReachabilityStatus] in Reachability.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

РЕДАКТИРОВАТЬ Забыл добавить этот бит.

ld: warning: игнорирование файла /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/SystemConfiguration, отсутствует необходимая архитектура armv7 в файле

РЕДАКТИРОВАТЬ

Хорошо, благодаря @gaige, я нашел проблему; перед SystemConfiguration.framework есть дополнительный слеш, которого там быть не должно. Я удалил рамки и снова добавил, и это не помогло. Как я могу удалить эту дополнительную косую черту?

3 ответа

Решение

Обычно лишние косые черты не портят процесс сборки в стиле UNIX.

Но вам нужно убедиться, что архитектура armv7 находится внутри файла фреймворка, который пытается использовать ваша сборка. Для этого используйте lipo -info команда в командной строке:

lipo -info /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer‌​/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks//SystemConfiguration.framework/Sy‌​stemConfiguration

Вы должны увидеть результат примерно так:

Architectures in the fat file: SystemConfiguration are: armv6 armv7

Если вы этого не сделаете, ваш проект, вероятно, настроен для ссылки на неправильную версию SystemConfiguration.framework. На вашем компьютере есть несколько версий этой платформы. Итак, я бы проверил путь фреймворка (т.е. SystemConfiguration), который у вас есть в вашем проекте.

Обычно я ожидаю, что этот файл будет примерно таким (с учетом версии ОС, которую вы используете):

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Lib‌​rary/Frameworks/SystemConfiguration.framework

Я просто почистил и перезапустил xcode и все заработало.

У меня была эта проблема в течение 8 часов с проектом Cordova и org.apache.cordova.network-information плагин. По ответам выше и нескольким другим ответам мне было предложено поискать в разделе Project > Target > Build Phases > Link Binary with Libraries Xcode, который был прав.

Но хотя SCNetworkReachabilityCreateWithAddress определяется в SystemConfigration.frameworkЯ не смог избавиться от ошибок компоновщика, систематически добавляя и удаляя эту и другие библиотеки.

Наконец, я создал новый проект с плагином и скопировал структуру фреймворка точно так же, как и оригинал. Теперь это работает.

Заключение:

  • Если возможно, создайте новый проект с необходимыми расширениями и скопируйте из него созвездия. Это может помочь.
  • Иногда библиотека слишком много включена, поэтому снимите ее. Иногда это наоборот.
  • Чтобы копать глубже, проверьте SystemConfiguration.framework как описано в выдающихся ответах выше. Это может не соответствовать целевой архитектуре. Далее, проверьте наличие странных символов в сборке, включая пути.
Другие вопросы по тегам