【问题标题】:Duplicate symbol Error : Flurry SDK 5.0.0 with Objective-Zip, ZLib, MiniZip重复符号错误:带有 Objective-Zip、ZLib、MiniZip 的 Flurry SDK 5.0.0
【发布时间】:2014-04-30 22:53:28
【问题描述】:

Objective-ZipZLibMiniZip 使用 Flurry 5.0.0 编译失败并出现 34 duplicate symbols for architecture i386

报告了重复的符号 _zipOpen , _unztell, _unzSetOffset, _unzClose

Flurry 4.3.2 用于XCode 5.0 时,相同的项目编译良好 有人遇到过这个问题吗?有什么办法吗?

【问题讨论】:

    标签: xcode5 zlib flurry objectivezip


    【解决方案1】:

    我遇到了这个问题,因为 FlurryAds 5.0.0 在内部使用 ZipArchive,但我们也在自己的应用程序中使用 ZipArchive(通过 Cocoapods)。这可能是由于使用了 Flurry 使用的任何与 zip 相关的库。

    如果您在应用中的任何位置使用 ZipArchive 及其依赖项,则会出现冲突,因为您的 ZipArchive 副本和 FlurryAds 的 ZipArchives 副本都定义了相同的符号。

    这是一个 Objective-C 的问题,因为 Objective-C 不支持命名空间,这会让两个副本一起存在。

    你也可以责怪 Flurry,因为他们在分发二进制库时没有为其依赖项添加前缀(即 FlurryZipArchive,前缀是命名空间的替代方法)。

    目前不完美的解决方案是从目标中删除ZipArchive.mioapi.cmztools.cunzip.czip.c

    您仍然可以导入 ZipArchive.h 并使用它,但这有点危险,因为我们不知道 ZipArchive FlurryAds 正在使用哪个版本(或者他们是否可能已对其进行了修改),因此我们无法确定我们的头文件与它们在库中定义的符号兼容。

    可能没问题,Flurry 可能正在使用最新版本并且没有修改它。

    但是,我们应该要求 Flurry 使 ZipArchive 成为显式的外部依赖项(这样我们就可以共享一个安装和 ZipArchive 的一个标头),或者为 ZipArchive 添加前缀,这样它就不会影响其他依赖项。

    【讨论】:

    • 您也可以从链接器标志中删除“-ObjC”以避免冲突,但毫无疑问,您有充分的理由将其放在那里。这个 SO 答案涵盖了 -ObjC 标志的替代方案:stackoverflow.com/questions/11254269/…。如果 Flurry 可以为库添加前缀,那么实现通常会更容易。
    • Flurry 已经确认前缀没有进入 5.2,但应该在 5.3 中,所以这个问题应该会消失
    【解决方案2】:

    您需要添加另一个框架。您需要在新的 Flurry 5.0.0 中添加一个额外内容。它是关于以下框架:

    libz.dylib
    

    编辑:

    尝试从构建过程中排除这些文件:ioapi.c/.h mztools.c/.h unzip.c/.h zip.c/.h ZipArchive.mm/.h crypt.h

    祝你好运!

    【讨论】:

    • 'libz.dylib' 已经存在。这是“重复符号”错误。您的解决方案将适用于“未找到符号”错误。
    • @danfelabs 添加了 Flurry 自己的另一个解决方案。使用新 SDK 时出错。
    【解决方案3】:

    我遇到了同样的问题。

    重命名 unzip.h 和 unzip.m(对于 MiniZip) - 对我有帮助。

    【讨论】:

      【解决方案4】:

      我在不使用Flurry 的情况下遇到了同样的问题。我使用 cocoapods 并添加了 ZipArchiveobjective-zip 库作为依赖项。我的项目build settings:-all_loadOther-Linker-Flags 有超额价值。

      我的目标在其Other Linker Flags 中只有$(inherited) 值,因此-all_load 标志是从项目设置中隐式添加的。这就是那些链接器错误的原因

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 2014-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多