2016-10-01 9 views
2

私はUnrar4iOS.Frameworkを使用しています。それはうまく動作しますが、-Objc他のリンカーフラグを追加するとうまくいきます。それは私に重複エラーを与える。-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) 

他のライブラリを使用するにはObjcフラグを使用する必要がありました。

+0

#importを使用してフレームワークをインポートするコードを確認します。 .hまたは.mファイルをインポートしているかどうか確認してください – Arun

+0

それでもうまくいかない場合は、フレームワークを削除してもう一度追加してください。 – Arun

+0

リンカーフラグを削除すると正常に動作していることを確認しました – Mahavir

答えて

4

-all_loadまたは-Objcフラグを指定していて、静的ライブラリのプロジェクトのクラスのシンボル名が同じ場合は、
にリンク時に「重複シンボル」エラーが表示されます。

なぜですか?

このフラグはリンカーに、Objective-Cクラスまたはカテゴリを定義するライブラリ内のすべてのオブジェクトファイルをロードさせます。このオプションは通常、(アプリケーションに追加のオブジェクトコードがロードされるため)より大きな実行可能ファイルを生成しますが、既存のクラスのカテゴリを含む有効なObjective-C静的ライブラリを正常に作成することができます。 Apple公式ドキュメントの

プロジェクトでは、今、Unrar4iOS.oの3シンボルがクラッシュしました。あなたの最初の重複シンボル・エラー・ログに例えば



__Z12CallbackProcjlllシンボルが
をクラッシュした(1)ライブラリ/開発/ Xcodeの/ DerivedData/SARUnArchiveANY-fgljekydpkmvrlgapbahtfvvhsdl /ビルドします/中間/ SARUnArchiveANY.build /デバッグ - iphonesimulator/SARUnArchiveANY.build /オブジェクト - ノーマル/ x86_64版/ Unrar4iOS.o

(2)/マイプロジェクト/ SARUnArchiveANY-マスター/ SARUnArchiveANY /ベンダー/フレームワーク/ Unrar4iOS.framework/Unrar4iOS(Unrar4iOS.o)

そしてその 同じパターンが2番目と3番目の重複シンボルになります。

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ファイルをアーカイブ解除のための非常に便利なライブラリ。以下のライブラリの 単に統合:問題を解決するためにhttps://github.com/saru2020/SARUnArchiveANY


から

Unrar4iOS
SSZipArchive
LZMA SDK(7Z)

は、私は、このリンクをお勧めします。
http://atnan.com/blog/2012/01/12/avoiding-duplicate-symbol-errors-during-linking-by-removing-classes-from-static-libraries

私はすでに前に行っていたので、この問題を解決できました。

関連する問題