5

我目前在我的项目中有 ShareKit,它被编译为静态库。它得到了适当的实施。我还通过将亚马逊的框架添加到我的项目中来实施亚马逊的 AWS 开发工具包。

似乎重复的符号来自亚马逊的 AWS 开发工具包文件“AWSIOSSDK”。这是它的样子:

在此处输入图像描述

该文件与 ShareKit 的文件 libShareKit.a 发生冲突。这是该文件的样子:

在此处输入图像描述

无论如何,这两个文件都是我以前从未见过的文件。似乎一些 JSON 文件在其中发生冲突。

我查看了其他 SO 问题,他们说要对已编译的源代码做一些事情,但这些文件都不是来自任一库的已编译源代码。

这是 Xcode 给出的确切错误:

ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser

无论如何,有人知道我应该做什么吗?除非我解决此问题,否则我的应用程序无法编译。

谢谢!

4

3 回答 3

5

您可以继续将库存档拆分为其目标文件,然后通过删除重复项再次合并它们。

请参阅以下演练以获得管理该任务的想法: 通过从静态库中删除类来避免链接期间重复的符号错误

于 2012-07-22T20:42:33.190 回答
4

这两个都内置SBJsonParser在他们的静态库中。这不是构建静态库的正确方法。每个都应该在没有的情况下构建SBJson,然后您应该将所有它们与SBJson. 有几个解决方案:

  • 重建这些库(或让他们的维护者这样做)以不将第三方库直接包含到静态库中。这是理想的解决方案。
  • 使用.SBJson从文件中删除不正确的文件。您应该能够使用列出其中的对象然后删除不应该在其中的对象来执行此操作。您当然也可以提取所有文件并直接链接它们。.aarar -t.aar -dar -x.o
于 2012-07-22T20:40:22.990 回答
0

我对 FaceBookConnect 框架(我们称之为项目 B)和我的项目(项目 A)有同样的问题。两者都再次链接 JSON 框架。

解决方案是:

  1. 转到项目 B > 目标 > 构建阶段 > 从“将二进制文件与库链接”中删除 JSON
  2. 确保 JSON 框架仍在项目中(不要删除它),以便项目 B 可以构建
  3. 构建你的项目 B 你不应该得到任何错误。该项目应构建但不嵌入 JSON 框架符号
  4. 在项目 A 中添加项目 B 产品(一个框架)和 JSON 框架
  5. 转到项目 A > 目标 > 构建阶段并检查项目 B 和 JSON 是否已添加到“将二进制文件与库链接”部分
  6. 构建你的项目

问候,

于 2014-11-04T09:49:51.933 回答