【问题标题】:-Objc Other linker flags gives duplicate symbol error-Objc 其他链接器标志给出重复符号错误
【发布时间】:2016-10-01 11:35:57
【问题描述】:

我正在使用Unrar4iOS.Framework。它工作正常,但是当我添加 -Objc 其他链接器标志时。它给了我重复的错误。

    duplicate symbol __Z12CallbackProcjlll in:
    Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
    /My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)
duplicate symbol _OBJC_IVAR_$_Unrar4iOS.header in:
    Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
    My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)
duplicate symbol _OBJC_IVAR_$_Unrar4iOS.flags in:
    Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
    My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

我需要添加 use Objc 标志才能使用其他库。

【问题讨论】:

  • 使用#import 检查您导入框架的代码。检查您是在导入 .h 还是 .m 文件
  • 如果这不起作用,请尝试删除并再次添加框架
  • 如果我删除链接器标志,我已经检查过它的工作正常
  • 您是否尝试过删除框架并重新添加?
  • 是的次数

标签: ios objective-c xcode


【解决方案1】:

如果您指定 -all_load 或 -Objc 标志,并且静态库在您的项目中具有相同的类符号名称,
您将在链接时看到这些“重复符号”错误。

为什么?

此标志会导致链接器加载库中定义 Objective-C 类或类别的每个目标文件。虽然此选项通常会导致更大的可执行文件(由于加载了额外的目标代码进入应用程序),它将允许成功创建有效的Objective-C静态库,其中包含现有类的类别。

来自苹果官方文档。

在您的项目中,现在,Unrar4iOS.o 中的 3 个符号已崩溃。

例如在您的第一个重复符号错误日志中,

__Z12CallbackProcjlll 符号崩溃
(1) Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o

(2) /My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

第二个和第三个重复符号将采用相同的模式。

duplicate symbol __Z12CallbackProcjlll in:
Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
/My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

duplicate symbol _OBJC_IVAR_$_Unrar4iOS.header in:
Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

duplicate symbol _OBJC_IVAR_$_Unrar4iOS.flags in:
Library/Developer/Xcode/DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl/Build/Intermediates/SARUnArchiveANY.build/Debug-iphonesimulator/SARUnArchiveANY.build/Objects-normal/x86_64/Unrar4iOS.o
My Project/SARUnArchiveANY-master/SARUnArchiveANY/vendor/Frameworks/Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

所以,为了总结您的项目症状,现在,在您的项目中,
Unrar4iOS.framework 和 SARUnArchiveANY 库相互崩溃,并在 Unrar4iOS 对象文件中出现三个重复的符号。

另外,下面是 SARUnArchiveANY git 存储库介绍。
它已经指定 SARUnArchiveANY 库包含 Unrar4iOS。

SARUnArchiveANY

一个非常有用的库,用于解压缩 iOS 的 .zip、.rar、.7z 文件。 以下库的简单集成:

Unrar4iOS
SSZipArchive
LZMA SDK (7z)

来自https://github.com/saru2020/SARUnArchiveANY


为了解决这个问题,我推荐这个链接。
http://atnan.com/blog/2012/01/12/avoiding-duplicate-symbol-errors-during-linking-by-removing-classes-from-static-libraries

你可以解决这个问题,因为我之前已经这样做了。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2013-10-23
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多