2012-04-12 102 views
12

时添加可达性类失败我添加了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) 
+0

请检查您的网络连接或运营商网络,这_OBJC_CLASS _ $ _可达意味着可达性问题,以互联网为设备 – Charan 2012-04-12 07:30:25

+1

请对这个样子.http://stackoverflow.com/questions/9804526/reachability-ios-5-1-ipad – sandy 2012-04-12 07:31:10

回答

41

好的,线索都在你发布的错误报告中。

虽然链接(该消息是从连接器LD),它在你的项目中的所有符号的编译后出现,该消息说

“在AppDelegate中,你已引用称为可达一类对象

"_OBJC_CLASS_$_Reachability" 

并尽可能链接器而言可达是不确定的。

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

1选择导航窗格中

2项目文件选择目标

3选择构建阶段

4展开编译源代码部分

*现在检查将被编译的源代码列表d为您丢失的类,你的情况Reachability.m

如果丢失,使用+按钮,将文件添加到目标。

另一种方式是

enter image description here

1选择你想不被编译

2打开Utilities面板

3选择文件检查选项卡

文件您项目中的每个目标都会有一个复选框,您可以很容易地看到您的.m正在为每个/所有目标编译文件。

+1

解决了我的问题..谢谢.. – 2012-10-14 07:49:23

+1

+1这样好的解释。 – Kuldeep 2012-11-23 12:02:16

+0

非常感谢! – DmitryKanunnikoff 2017-07-28 20:37:09

1

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

0

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

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

您可以按照大摩的解决方案,直到最后一个步骤,然后,而不是扩大编译源代码部分,你必须展开链接二进制与图书馆部分代替,并添加CoreTelephony.framework来源包含CTTelephonyNetworkInfo

你可以阅读更多关于苹果公司的官方网站上CTTelephonyNetworkInfo类参考这里:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/Reference/Reference.html