Apple Mach-O Linker Errors (20) - Undefined символы для архитектуры armv7
Я получил эти ошибки после добавления "-all_load" в настройке сборки "Другие компоновщики флагов" после добавления "libPusher-combination.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)
Если вам нужна дополнительная информация, просто спросите. Надеюсь, что я не слишком беспокоюсь. Спасибо заранее.
Ответы
Ответ 1
Вы можете проверить свою цель → Фаза сборки. существуют ли эти файлы или нет? и если вы работаете для симулятора, сначала вам нужно создать сборку для симулятора этой библиотеки, я думаю, вы используете библиотеку SRWebSocket. Просто откройте этот проект и просто создайте сборку для симулятора и скопируйте файлы из папки создания, а затем добавьте в свой проект и сделайте то же самое для устройства, если вы используете приложение на устройстве.
Ответ 2
Убедитесь, что вы включили следующие рамки (через https://github.com/square/SocketRocket):
Зависимости Framework
Ваш .app должен быть связан с следующими фреймворками /dylibs
libicucore.dylib CFNetwork.framework Security.framework Foundation.framework
Ответ 3
Убедитесь, что у вас также есть -licucore в "Other Linker Flags" на вкладке настроек сборки, как показано на скриншоте:
![Other Linker Flags]()
Ответ 4
Я скопировал полную папку SocketRocket в мое приложение для использования веб-сокетов в моем приложении и связал файлы libicucore.dylib, CFNetwork.framework, Security.framework, Foundation.framework с моим проектом. Это устранило все мои ошибки и предупреждения.
Ответ 5
Для последнего sdk вы должны добавить:
libicucore.tbd
так как libicucore.dylib больше не присутствует.
Надежность .tbd расширение не для "быть удаленным"?
Ответ 6
В моем случае, когда я добавил SystemConfiguration.framework в проект и проблема...: -)