迁移到 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的未定义符号

XCode 4.5 警告父/子类的类别之间的方法名称冲突

XCode 4.5.2 的“架构的未定义符号”

“架构 i386 的未定义符号”问题

IOS 6.0 xcode 4.5 编译错误#import 代码保存在类外的文件中

XCode 5 - 架构 armv7 的未定义符号: