当我尝试构建时,添加Reachability类失败

时间:2012-04-12 07:26:18

标签: iphone ios linker-errors

我添加了SystemConfiguration框架。我正在部署3.2及更高版本的目标。我忘了添加一些东西吗?

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_Reachability", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

3 个答案:

答案 0 :(得分:41)

好的,这些线索都在您发布的错误报告中。

在编译项目中的所有符号之后链接(消息来自链接器 ld )时,消息显示

“在AppDelegate中,您引用了一个名为可达性的类对象”

"_OBJC_CLASS_$_Reachability"

就链接器而言,可达性未定义。

因此,请检查项目中是否正在编译Reachability。有几种方法可以做到这一点。也许最明确的方法是 enter image description here

1在导航窗格中选择项目文件

2选择目标

3选择构建阶段

4展开编译来源部分

*现在查看将为您缺少的课程编译的来源列表,在您的情况下 Reachability.m

如果缺少,请使用 + 按钮将文件添加到目标。

另一种方式是

enter image description here

1选择您认为未编译的文件

2打开实用工具面板

3选择文件检查器选项卡

项目中的每个目标都会有一个复选框,您可以轻松查看是否正在为每个/所有目标编译 .m 文件。

答案 1 :(得分:1)

您可能忘记在项目中包含Reachability类了!

答案 2 :(得分:0)

当我升级到最新版本的Mixpanel时,我遇到了类似的问题。错误读取:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
      objc-class-ref in Mixpanel.o

您可以按照Damo的解决方案直到最后一步,然后不必扩展编译源部分,而是扩展链接二进制文件库部分,并且添加包含 CTTelephonyNetworkInfo CoreTelephony.framework 来源。

您可以在Apple的官方网站上阅读有关CTTelephonyNetworkInfo类参考的更多信息:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/Reference/Reference.html

相关问题