【问题标题】:duplicate symbol while adding a static library to a Xcode project将静态库添加到 Xcode 项目时出现重复符号
【发布时间】:2015-01-09 19:49:33
【问题描述】:

我正在尝试将this photo browser library 添加到我们的项目中。我在 readme.md 文件中关注 Method 2: Static Library。基本上,在 Xcode 中添加静态库是非常标准的步骤。如果我创建一个简单的 hello world 项目,一切都会顺利进行。但是,当我将库添加到我们现有的项目时,我们会收到以下 duplicate symbol 错误。

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

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)

Intermediates 文件夹和 Products 文件夹之间似乎总是出现重复。谁能解释为什么会发生这种情况以及如何解决这个问题?

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

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

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

    修复方法是重命名其中一个类或重用 MBProgressHUD,无论对您有用。

    【讨论】:

      【解决方案2】:

      当发生以下两种情况之一时,我通常会看到这种情况:

      • 我已将标头和/或实现添加到我的项目中两次
      • 您的 xcodeproj 文件中有一个错误的合并,该符号多次出现。

      这是我通常做的事情:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        • 2017-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多