Ошибки компоновщика Apple Mach-O (20) - неопределенные символы для архитектуры armv7

Я получил эти ошибки после того, как добавил " -all_load " в настройке сборки "Другие флаги компоновщика", как только добавил "libPusher-комбинированный.a" и его заголовочные файлы. Я следовал инструкциям точно до части ввода "-all_load" (в разделе "Использование предварительно скомпилированной статической библиотеки" в "Добавление в ваш проект iOS"), но в итоге я получил 20 ошибок Mach-O Linker. / Может ли кто-нибудь помочь мне с этим?

Вот ошибки:

Undefined symbols for architecture armv7:
 "_utf8_nextCharSafeBody", referenced from:
  -[SRWebSocket _pumpScanner] in libPusher-combined.a(SRWebSocket.o)
 "_SCError", referenced from:
  -[Reachability startNotifier] in libPusher-combined.a(Reachability.o)
 "_utf8_countTrailBytes", referenced from:
  -[SRWebSocket _pumpScanner] in libPusher-combined.a(SRWebSocket.o)
 "_SCNetworkReachabilitySetDispatchQueue", referenced from:
  -[Reachability startNotifier] in libPusher-combined.a(Reachability.o)
  -[Reachability stopNotifier] in libPusher-combined.a(Reachability.o)
 "_kCFHTTPVersion1_1", referenced from:
  -[SRWebSocket didConnect] in libPusher-combined.a(SRWebSocket.o)
"_CFHTTPMessageIsHeaderComplete", referenced from:
  ___30-[SRWebSocket _readHTTPHeader]_block_invoke_0 in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageCreateRequest", referenced from:
  -[SRWebSocket didConnect] in libPusher-combined.a(SRWebSocket.o)
 "_SCNetworkReachabilityCreateWithAddress", referenced from:
  +[Reachability reachabilityWithAddress:] in libPusher-combined.a(Reachability.o)
 "_SCErrorString", referenced from:
  -[Reachability startNotifier] in libPusher-combined.a(Reachability.o)
 "_SCNetworkReachabilityCreateWithName", referenced from:
  +[Reachability reachabilityWithHostname:] in libPusher-combined.a(Reachability.o)
 "_CFHTTPMessageCopyAllHeaderFields", referenced from:
  ___30-[SRWebSocket _readHTTPHeader]_block_invoke_0 in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageGetResponseStatusCode", referenced from:
  -[SRWebSocket _HTTPHeadersDidFinish] in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageSetHeaderFieldValue", referenced from:
  -[SRWebSocket didConnect] in libPusher-combined.a(SRWebSocket.o)
  ___25-[SRWebSocket didConnect]_block_invoke_0 in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageCreateEmpty", referenced from:
  -[SRWebSocket _readHTTPHeader] in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageCopySerializedMessage", referenced from:
  -[SRWebSocket didConnect] in libPusher-combined.a(SRWebSocket.o)
 "_SCNetworkReachabilitySetCallback", referenced from:
  -[Reachability startNotifier] in libPusher-combined.a(Reachability.o)
  -[Reachability stopNotifier] in libPusher-combined.a(Reachability.o)
 "_SCNetworkReachabilityGetFlags", referenced from:
  -[Reachability isReachable] in libPusher-combined.a(Reachability.o)
  -[Reachability isReachableViaWWAN] in libPusher-combined.a(Reachability.o)
  -[Reachability isReachableViaWiFi] in libPusher-combined.a(Reachability.o)
  -[Reachability connectionRequired] in libPusher-combined.a(Reachability.o)
  -[Reachability isConnectionOnDemand] in libPusher-combined.a(Reachability.o)
  -[Reachability isInterventionRequired] in libPusher-combined.a(Reachability.o)
  -[Reachability reachabilityFlags] in libPusher-combined.a(Reachability.o)
  ...
 "_CFHTTPMessageCopyHeaderFieldValue", referenced from:
  -[SRWebSocket _checkHandshake:] in libPusher-combined.a(SRWebSocket.o)
 "_CFHTTPMessageAppendBytes", referenced from:
  ___30-[SRWebSocket _readHTTPHeader]_block_invoke_0 in libPusher-combined.a(SRWebSocket.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Если вам нужна дополнительная информация, просто спросите. Я надеюсь, что я не доставляю слишком много хлопот. Заранее спасибо.

6 ответов

Решение

Можете ли вы проверить в вашей цели->Build Phase. существуют ли эти файлы там или нет? и если вы работаете на симуляторе, то сначала вам нужно сделать сборку для симулятора этой библиотеки, что бы вы не использовали библиотеку SRWebSocket. Просто откройте этот проект и просто сделайте сборку для симулятора и скопируйте файлы из папки сборки, а затем добавьте в свой проект и сделайте то же самое для устройства, если вы запускаете свое приложение на устройстве.

Убедитесь, что вы включили следующие фреймворки (через https://github.com/square/SocketRocket):

Рамочные зависимости

Ваш.app должен быть связан со следующими frameworks / dylibs

libicucore.dylib CFNetwork.framework Security.framework Foundation.framework

Убедитесь, что у вас также есть -licucore в разделе "Другие флаги компоновщика" на вкладке настроек сборки, как на прикрепленном снимке экрана:

Другие флаги линкера

Для последней версии SDK вы должны добавить:

libicucore.tbd 

поскольку libicucore.dylib больше не существует.

Надеюсь, расширение.tbd не для "быть удаленным"?

Я скопировал полную папку SocketRocket в свое приложение для использования веб-сокетов в своем приложении и связал двоичные файлы libicucore.dylib, CFNetwork.framework, Security.framework, Foundation.framework с моим проектом. Это удалило все мои ошибки и предупреждения.

В моем случае, когда я добавил SystemConfiguration.framework в проект и проблема пошла...:-)

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