建筑物的重复符号[arm7,arm64]

时间:2015-11-04 09:11:52

标签: ios xcode

我在SDK中导入了新版本的框架。无论如何,我无法在运行iOS 9.0.1的iPhone 6上构建,因为以下错误让我发疯:

duplicate symbol _IPDJobStatus in:
/Users/akiki/Desktop/iOS 9 Test/MPSDK/iPD.framework/iPD(IPDDevice.o)
/Users/akiki/Desktop/iOS 9 Test/MPSDK/iPD.framework/iPD(IPDAdministration.o)
ld: 5 duplicate symbols for architecture arm7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在5个文件中找到两次相同的符号_IPDJobStatus会发生这种情况。使用arm64架构运行iOS 9.1的iPhone 4S也是如此。要导入框架,我从项目中删除旧框架,导入新框架并检查 Link Binary with Library 部分,框架引用链接到正确的更新文件。在询问之前我试图执行以下操作:

  1. 我在项目范围内搜索了没有结果的重复符号。
  2. 我不是偶然导入.m文件。
  3. Build Phases 项目设置的编译源不包含任何重复文件。
  4. Build Phases 项目设置的 Headers 中的框架标头引用链接到正确的文件。
  5. 我尝试清理项目,清空Derived Data文件夹,退出并重新启动Xcode。
  6. 我添加了-ObjC链接器标志(在这种情况下,重复的符号从五个变为仅一个)。
  7. 我将 No Common Blocks 编译器设置切换为NO,但无论是否有相同的错误。
  8. 我创建了一个新的空项目并在那里导入了框架。在这种情况下,我能够构建,因此问题必须存在于我的SDK中。
  9. 有人可以给我一些帮助吗?

4 个答案:

答案 0 :(得分:2)

您可以检查您的项目目录是否有可用的框架。如果可用,则删除它。

答案 1 :(得分:1)

我能够使用以下代码解决同样的问题。

将其添加到构建设置中的库搜索路径,并确保选择递归,删除可能是绝对路径的其他库路径。

$(PROJECT_DIR) 

可能会帮助你。

答案 2 :(得分:1)

你不能制作同名的常量类型变量&键入两个或更多类。

_IPDJobStatus是这个常量类型变量吗?

将其更改为其他类的其他名称。

Here you can see the same issue

答案 3 :(得分:0)

这意味着在您项目中同一个View Controller实例的多个副本(i,e表示重复)。

可能的观察:

IPDJobStatus 变量包含在 IPDDevice IPDAdministration 的框架中重复。请检查一下。

注意:您不应该/创建一个已经在任何其他框架中拥有Xcode默认或第三方框架的类。

例如: UIkit框架具有类名" UIApplication " (即UIApplication.h和UIApplication.m)。因此,如果您创建了类名称" UIApplication "。将发生此错误。同样适用于第三方框架。