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)
4

3 回答 3

41

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

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

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

"_OBJC_CLASS_$_Reachability"

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

因此,请检查您的项目中是否正在编译 Reachability。有几种方法可以做到这一点。也许最明确的方法是 在此处输入图像描述

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

2 选择目标

3 选择构建阶段

4 展开编译源部分

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

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

另一种方法是

在此处输入图像描述

1 选择你认为没有被编译的文件

2 打开实用程序面板

3 选择文件检查器选项卡

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

于 2012-04-12T08:02:17.303 回答
1

您可能忘记在项目中包含可达性类!

于 2012-07-11T17:22:29.450 回答
0

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

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

您可以按照 Damo 的解决方案直到最后一步,然后不必展开Compile Sources部分,而是必须展开Link Binary With Libraries部分,并添加包含CTTelephonyNetworkInfo的CoreTelephony.framework源。

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

于 2013-01-10T07:23:24.007 回答