1. ホーム
  2. その他

[解決済み] Xcode でアーキテクチャ x86_64 のシンボルが重複している。

2022-01-17 12:24:22

質問

私は今、上記のタイトルと同じ質問をしているのですが、まだ正しい答えが見つかっていません。エラーが発生しました。

    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

よろしくお願いします。

最後に  このエラーの原因がわかりました。 -ObjCOther Linker Flags . この値を削除した後、私は私のプロジェクトを正常に構築することができますが、私はなぜかわからない。誰かこれを説明できますか?

どうすればいいですか?

<ブロッククオート

75 アーキテクチャ x86_64 の重複するシンボル

同じ関数を2回ロードしていることを意味します。 を削除すると、この問題は解消されます。 -ObjC から Other Linker Flags, これは、このオプションの結果、関数が2回ロードされることを意味します。

テクニカルQ&Aより

このフラグを使うと、リンカはライブラリ内のすべてのオブジェクトファイル Objective-Cのクラスまたはカテゴリを定義しています。このオプションは 通常、実行ファイルのサイズが大きくなります(オブジェクトコードが追加されるため)。 アプリケーションに読み込まれる)、この方法によって カテゴリーを含む効果的なObjective-Cのスタティック・ライブラリーは 既存のクラス

https://developer.apple.com/library/content/qa/qa1490/_index.html