Apple Mach-O链接器错误(20) - 架构armv7的未定义符号

chr*_*sjr 25 architecture iphone xcode arm7 ios

在我添加"libPusher-combined.a"及其头文件后,在"Other Linker Flags"构建设置中添加"-all_load"后,我收到了这些错误.我按照说明完全按照"-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)
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请询问.我希望我不会给太多麻烦.提前致谢.

Tod*_*son 74

检查以确保包含以下框架(通过https://github.com/square/SocketRocket):

框架依赖性

您的.app必须与以下框架/ dylib链接

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

  • 碰到这个为PonyDebugger添加了一个cocoapod.解决方案有效 谢谢! (2认同)

Mar*_*ius 27

确保在构建设置选项卡中的"其他链接器标志"中也有-licucore,如附带的屏幕截图所示:

其他链接器标志


sar*_*ngh 5

我将完整的SocketRocket文件夹复制到我的应用程序中,以便在我的应用程序中使用Web套接字,并将libicucore.dylib,CFNetwork.framework,Security.framework,Foundation.framework二进制文件与我的项目相关联.这删除了我的所有错误和警告.


小智 5

对于最新的sdk,您应该添加:

libicucore.tbd 
Run Code Online (Sandbox Code Playgroud)

因为libicucore.dylib不再存在.

希望.tbd扩展名不是"要删除"吗?


Pra*_*n-K 4

你可以在你的目标->构建阶段中检查一下吗?这些文件是否存在?如果您正在运行模拟器,那么首先您需要为该库的模拟器进行构建,无论我猜您正在使用 SRWebSocket 库。只需打开该项目并为模拟器进行构建,然后从构建文件夹复制文件,然后添加到您的项目中,如果您在设备上运行应用程序,则对设备执行相同的操作。