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

我在添加“libPusher-combined.a”及其头文件后,在“Other Linker Flags”构build设置中添加“-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) 

如果你需要更多的信息,请问。 我希望我不要给太多麻烦。 提前致谢。

你能检查你的目标 – >build设阶段。 这些文件是否存在? 如果您正在运行模拟器,那么首先您需要为该库的模拟器进行构build,不pipe我是否使用SRWebSocket库。 只需打开该项目,只需构build模拟器,然后从构build文件夹复制文件,然后添加到您的项目,如果您正在设备上运行您的应用程序执行相同的设备。

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

框架依赖关系

您的.app必须链接到以下框架/ dylibs

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

确保您在“其他链接器标志”中的“生成设置”选项卡中也有“-licucore”,如附件屏幕截图所示:

其他链接器标志

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

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

 libicucore.tbd 

因为libicucore.dylib不存在了。

希望.tbd扩展名不是用来“删除”的?

在我的情况下,当我添加SystemConfiguration.framework到项目和问题去… 🙂