在向Xcode项目添加静态库时复制符号

时间:2014-11-12 20:18:00

标签: ios objective-c xcode

我正在尝试将this photo browser library添加到我们的项目中。我在 readme.md 文件中关注方法2:静态库。基本上,这是在Xcode中添加静态库的非常标准的步骤。如果我创建一个简单的 hello world 项目,事情就会好起来的。但是,当我将库添加到现有项目时,会出现以下重复符号错误。

这是一个错误的例子(还有很多,但它们看起来都很相似):

duplicate symbol _OBJC_CLASS_$_MBBarProgressView in:
    /Users/.../Build/Intermediates/PDFMaps.build/Debug-iphonesimulator/Project Name.build/Objects-normal/x86_64/MBProgressHUD.o
    /Users/.../Build/Products/Debug-iphonesimulator/libMWPhotoBrowser.a(MBProgressHUD.o)
duplicate symbol _OBJC_METACLASS_$_MBBarProgressView in:
    /Users/.../Build/Intermediates/PDFMaps.build/Debug-iphonesimulator/Project Name.build/Objects-normal/x86_64/MBProgressHUD.o
    /Users/.../Build/Products/Debug-iphonesimulator/libMWPhotoBrowser.a(MBProgressHUD.o)

似乎重复始终发生在中间件文件夹和产品文件夹之间。任何人都可以解释为什么会发生这种情况以及如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

从日志中看, MWPhotoBrowser库的类名为 MBProgressHUD https://github.com/mwaterfall/MWPhotoBrowser/tree/master/MWPhotoBrowser/Libraries/MBProgressHUD

以及项目层次结构中的另一个目标 PDFMaps 也具有相同的名称类,从而导致重复的符号错误。

修复是重命名其中一个类或重复使用 MBProgressHUD,无论您做什么。

答案 1 :(得分:0)

当两件事之一发生时,我通常会看到这一点:

  • 我已经将标题和/或实现添加到我的项目两次
  • 您的xcodeproj文件中有一个错误的合并,该符号显示的符号不止一次。

这是我通常做的事情:

  1. 关闭Xcode。在文本编辑器中打开xcodeproj
  2. 删除something.h和something.m文件的所有痕迹
  3. 保存并重新打开Xcode
  4. 重新添加标题和实施,检查适用的目标
  5. 构建