我添加了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 :(得分:41)
好的,这些线索都在您发布的错误报告中。
在编译项目中的所有符号之后链接(消息来自链接器 ld )时,消息显示
“在AppDelegate中,您引用了一个名为可达性的类对象”
"_OBJC_CLASS_$_Reachability"
就链接器而言,可达性未定义。
因此,请检查项目中是否正在编译Reachability。有几种方法可以做到这一点。也许最明确的方法是
1在导航窗格中选择项目文件
2选择目标
3选择构建阶段
4展开编译来源部分
*现在查看将为您缺少的课程编译的来源列表,在您的情况下 Reachability.m
如果缺少,请使用 + 按钮将文件添加到目标。
另一种方式是
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