6

在我的 iPhone 应用程序上工作并尝试构建以进行调试,我得到“106 个重复的架构 armv7 符号”?

我正在使用 .workspace 文件,因为我正在尝试使用 CocoaPods。如果我不使用 .workspace 而是使用 .xcodeproj 我不会收到错误消息,但是我会丢失 -lPods 。

在我的项目中,我在项目导航器中有以下目标。

Pods (blue icon)
MyProject (blue icon)
  Restkit.xcodeproj (blue icon)
  ... all my files

问题是 Restkit 引用了“AFHTTPClient.h”和所有其他 AF 代码,但我通过 CocoaPods 包含了它。我尝试从 RestKit 库中删除 AFNetworking 文件夹,但显然 Restkit 库找不到 AFNetworking 的 Pods 版本?

有没有办法让 RestKit 使用 Pods 版本?如果不是,我该如何从我的项目中删除 Pod?

4

7 回答 7

6

您写的一个 .h 文件中有一行

#include "___.m"

代替

#include "___.h"
于 2013-08-30T09:11:59.577 回答
2

架构重复符号”问题出现在两种情况下:

  1. 您在项目中添加了两次 .m 文件

  2. 您正在使用一个静态库(.a 文件),其中已经包含一些您包含在项目中的类。

要修复任何这些情况,请检查链接器错误并查找重复的 .o 文件(示例:Reachability.o)​​。

然后进入构建阶段 -> 编译源并搜索指定的文件,如果任何一个出现两次删除其中一个,如果只出现一次则意味着该文件也包含在添加到您的项目中的静态库之一中。从要编译的源列表中删除它,然后重试。

于 2013-10-23T08:37:29.063 回答
2

我也想出了同样的错误。通常,由于项目文件夹中的类和 xib 重复,会发生这种错误。例如,在我的项目中,我有两次这些课程ServiceRequest.h/.m。摆脱重复的,你很高兴。

于 2013-02-15T19:55:48.917 回答
2

所以我修好了。从供应商文件夹中删除 AFNetworking 的 RestKit 版本后,我通过将其拖回 Xcode 中将其添加回来。它询问我希望它使用/复制到哪个项目,这次我选择了 RestKitTest(或任何 RestKitTesting 的名称)。现在可以了。也许我之前同时选择了 RestKit 和 RestKitTest,这是错误的?

于 2012-12-05T15:58:10.950 回答
2

在 Build Phases -> Compile Sources 中,确保没有将同一个文件添加两次。

于 2013-06-13T21:47:07.103 回答
0
  • 当我将葫芦框架拖放到 xcode 上并在显示的窗口中选择添加到目标选项时,我看到了这个错误。基本上有两个对添加的文件的引用我必须手动删除葫芦框架

  • 正确的做法

    复制到葫芦框架到项目目录然后转到xcode项目选择目标->构建阶段->将二进制文件与库链接并使用+按钮添加框架

于 2013-05-24T13:50:22.360 回答
0

我注意到在安装 cocoaPods 后,Google 分析也会导致重复符号。一旦我删除了其中一个档案,libGoogleAnalytics_debug.a 或 libGoogleAnalytics.a 重复就消失了。但很明显,如果我删除调试之一,我将无法运行 os 模拟器,反之亦然。我知道这不是解决方案,但至少它可以让您了解什么是解决方案。如果我想知道在这种情况下如何同时拥有两个文件,我会回到这个线程。

编辑:我能够通过从 G 分析版本 2 升级到 3 来解决这个问题。它只有一个库文件,我想这就是我们不再得到重复符号的原因。我希望这是有道理的。

于 2013-10-18T23:49:22.710 回答