Неопределенные символы для архитектуры 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 и, похоже, не хочет ничего с этим делать, поскольку эта ошибка просто не исчезнет. Я рассмотрел немало подобных проблем, но многие из них подтвердили любые ответы. Этот вид только что развивался в выходные, когда никто его не трогал. Может кто-нибудь помочь.

EDIT Забыл добавить этот бит.

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

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

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

Как правило , дополнительные слэши не будут уничтожать 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 

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

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

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

Вывод:

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