迁移到 Xcode 4.5 后与可达性相关的未定义符号
Posted
技术标签:
【中文标题】迁移到 Xcode 4.5 后与可达性相关的未定义符号【英文标题】:Undefined symbols related to Reachability after migrating to Xcode 4.5 【发布时间】:2012-10-02 12:32:44 【问题描述】:在我将我的 Xcode 项目从运行 Xcode 4.2 的 Mac 移动到另一个运行 Xcode 4.5 的 Mac 后,我收到以下错误。
"_SCError", referenced from:
-[RKReachabilityObserver scheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
"_SCErrorString", referenced from:
-[RKReachabilityObserver scheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[Reachability reachabilityWithAddress:] in Reachability.o
+[Reachability reachabilityWithAddress:] in test1ViewController.o
-[RKReachabilityObserver initWithAddress:] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityCreateWithName", referenced from:
+[Reachability reachabilityWithHostName:] in Reachability.o
+[Reachability reachabilityWithHostName:] in test1ViewController.o
-[RKReachabilityObserver initWithHost:] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability connectionRequired] in Reachability.o
-[Reachability currentReachabilityStatus] in Reachability.o
-[Reachability connectionRequired] in test1ViewController.o
-[Reachability currentReachabilityStatus] in test1ViewController.o
-[RKReachabilityObserver getFlags] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
-[Reachability startNotifier] in test1ViewController.o
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
-[Reachability startNotifier] in test1ViewController.o
-[RKReachabilityObserver scheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilitySetDispatchQueue", referenced from:
-[RKReachabilityObserver scheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
-[RKReachabilityObserver unscheduleObserver] in libRestKit.a(RKReachabilityObserver.o)
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[Reachability stopNotifier] in Reachability.o
-[Reachability stopNotifier] in test1ViewController.o
ld: symbol(s) not found for architecture i386
【问题讨论】:
@Spynet:我冒昧地撤消了您对这个问题的编辑。这不是代码,而是链接器的逐字输出,并且格式已经很好。 【参考方案1】:SCError、SCErrorString、...都来自 SystemConfiguration.framework,因此您的目标的“Link Binary With Libraries”设置中似乎没有。
("Undefined symbols ..." 链接器错误在很多情况下可以通过在 XCode 文档浏览器中查找符号没有前导下划线来解决。在文档页面的顶部,您可以找到定义符号的框架。)
【讨论】:
【参考方案2】:我遇到了类似的问题。添加SystemComfiguration.framework后,问题解决了。
【讨论】:
【参考方案3】:您忘记将 SystemConfiguration.framework 添加到您的项目中。
【讨论】:
【参考方案4】:尝试创建一个新方案。我在 Xcode 6.3 中看到了类似的错误消息——这为我解决了。
【讨论】:
【参考方案5】:您似乎忘记了包含 RestKit。 Add the library,看看你是否还有问题。
【讨论】:
【参考方案6】:问题很可能是该项目不包括 RestKit。转到您的目标 -> 构建阶段 -> 链接并验证您那里确实有 RestKit。
【讨论】:
【参考方案7】:-
将
SystemComfiguration.framework
添加到您的目标。
也加#import <SystemConfiguration/SystemConfiguration.h>
【讨论】:
以上是关于迁移到 Xcode 4.5 后与可达性相关的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章
在Xcode 4.5中使用ZXing库时,体系结构armv7的未定义符号