Ошибки компоновщика 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 в проект и проблема пошла...:-)