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

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

Вот ошибки:

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 ]

74 голосов
/ 04 декабря 2012

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

Зависимости фреймворка

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

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

27 голосов
/ 24 октября 2013

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

Other Linker Flags

5 голосов
/ 11 декабря 2015

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

libicucore.tbd 

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

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

5 голосов
/ 01 апреля 2013

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

4 голосов
/ 29 марта 2012

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

2 голосов
/ 23 января 2013

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

...