アーキテクチャーarm64の重複シンボル


103

Xcodeプロジェクトを実行しようとすると、シンボルが重複しているというエラーで失敗します。私はオンラインでこれらの重複を見つけましたが、運がありませんでした:

ここに画像の説明を入力してください

これを修正する方法はありますか?


1
これは、BFAppLinkReturnToRefererViewが多すぎることを意味します
Andrey Chernukha 2014年

また、デスクトップ上にあるフレームワークにリンクするのではなく、プロジェクトを少しクリーンアップすることもできます。:)
picciano 2014年

私の場合、extern NSString * const tColorを追加しました。.hファイルとNSString const * tColor = @ "#000022"; 2つの異なる.mクラス。
ios_dev 2017

ここで探しているものを見つけることができます。stackoverflow.com
a / 46678210/988941

回答:


65

エラーから、FacebookSDK.frameworkにはすでにBolts.frameworkクラスが含まれているようです。プロジェクトから追加のBolts.frameworkを削除してみてください。


22
方法?ステップバイステップでガイドしてください
イムダッドアリ

68

私にとっては、「Common Blocksなし」コンパイラー設定をNOに切り替えるのに役立ちました:かなり意味があるようですが、設定はここで説明されています: GCC_NO_COMMON_BLOCKSの用途は何ですか?


あなたは男です!新しいxCode 7.3.1プロジェクトを作成し、デフォルトの設定はYES :(
Yaro

4
このオプションは、Xcodeの[プロジェクトを推奨設定に更新]ウィンドウでオンに切り替えられました。
commscheck 2016

あなたは最高です
showmyroutes 2018

貴重なヒントですが、私の場合は役に立ちませんでした!:O
Fattie 2018

49

Xcode 8を使用して、「プロジェクトを推奨設定に更新する」オプションがプロジェクトの「共通ブロックなし」をオンにしました。

オフに戻すと、すべてが修正されました。


2
プロジェクトを推奨設定に更新します。どうすればよいですか?どのメニューからですか?
Sazzad Hissain Khan 2017

@SazzadHissainKhanこれはビルド設定にあります。
旅行


21

ポッドのダウングレード中にポッドをめちゃくちゃにし、ポッドを削除して再度インストールすることで、アーキテクチャarm64の重複シンボルの問題を解決しました:

pod deintegrate
pod install

CocoPods-3.9.0を通じて統合されたGoogle Places SDKを使用していて、この回答で問題が解決しました。
アンドリュールンディ

11

別の解決策は次のとおりです。

選択プロジェクト - > [ 対象 ] - > [ ビルドフェーズ - > コンパイルソース - >(あなたのケースでは第三の最後のエラー行に記載されているファイルの検索BFAppLinkReturnToRefererView.o)。

次に、検索結果に1つまたは2つのファイルが表示されます。

それらの1つを削除して、再度コンパイルします。残っているファイルが1つだけで、ビルドの競合がなくなったため、今すぐ再コンパイルする必要があります。

それが機能しない場合は、ファイルにエラーが含まれている可能性があるため、それらをすべて削除してから再コンパイルする必要があります。再び動作するはずです。


2
非常に過小評価されている答え、あなたの助けに感謝、ルーカス!:)
patreu22 '15年

問題が解決されてうれしいです:)

10

Xcode 8にアップグレードすると、推奨設定にアップグレードするようメッセージが表示されました。同意してすべて更新しました。コンパイル時の問題が発生し始めました:

XXXXの重複シンボルXXXXの重複シンボルXXXXの重複シンボル

合計143エラー。ターゲットに移動->ビルド設定->共通ブロックなし-> NOに設定。これで問題は解決しました。問題は、統合プロジェクトに共通のコードブロックがあり、それをコンパイルできないことでした。説明はここにあります


9

このエラーは、リンカーがobjファイルをリンクしようとしたときに発生します。このエラーについて私が考えることができるいくつかの理由は次のとおりです。

  1. 複製された関数/クラスは、プロジェクト内の2つの異なる場所/ファイルで定義されており、ビルドコマンドのバリエーションに応じてコンパイルできるのはそのうちの1つだけでした。しかし、どういうわけか、これらのファイルは両方ともプロジェクトでコンパイルされています。したがって、コンパイルする必要のあるファイルのリストにsrcファイルを追加するif-else条件またはその他の依存関係を確認し、特定のビルドコマンドで不要なファイルを削除する必要があります。

  2. 複製された関数/クラスが、プロジェクトの2つの異なる場所/ファイルで誤って定義されています。間違った定義を削除してください。

  3. 再度ビルドする前にOBJディレクトリをクリーンアップしてください。以前のビルドからの古いobjファイルがいくつかあり、これがこの競合の原因となっている可能性があります。

PS私はエキスパートではありませんが、これは私が直面したときにこの問題を解決する方法です。:)


9

Xcode 7または8に移行し、本当に古いプロジェクトを開いている場合、私はこの問題に遭遇しました:

SomeConstFile.h

NSString * const kAConstant;

SomeConstFile.m

NSString *const kAConstant = @"a constant";

以前のバージョンのコンパイラは、ヘッダーファイルの定義はexternであると想定していたため、SomeConstFile.hをどこにでも含めても問題ありませんでした。

次に、これらの定数をexternとして明示的に宣言する必要があります。

SomeConstFile.h

extern NSString * const kAConstant;

1
これをありがとう!私が作成していたconstants.hファイルの問題で苦労していましたlol
Sung Min Kim

1
私も同じ問題に直面していた答えをありがとう、あなたの答えは私のために働いた...
reetu

1
おかげで、私は過去3〜4時間この問題に苦労していました
Sumit Kumar Saha

9

パッチの下で私のために働く.. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

NOに戻すと問題は解決しました!


2
ステップ2:問題を解決しました。ありがとうございました:)
ドラルド

2

まあ、FBのようなSDKやVuforiaやGoogleAnalyticsのようなライブラリを使用しているときに、サンプルプロジェクトを追加すると、フレームワークなどがすでに含まれているという問題が発生することがあります。サンプルに含まれています


2

私にとって、問題はconstの作成スタイルであり、このiOS8までは問題なく機能しました。

int const kView_LayoutCount = 3;

私の.hファイルで。共通ブロックをNOに設定すると、6行のような636のリンカーファイルが生成されました。(はいの場合は14k +)。値の宣言の.hを取り除いた後、行を.mに移動し、コンパイルは問題ありませんでした。

これが他の人に役立つことを願っています!


2

私の場合、理由はあまりにも愚かでした:

マクロが定義されているConstant.hファイルがありました。そこでNSStringをやろうと思った。そしてこれをしました:

NSString const *kGreenColor = @"#00C34E";

これが原因で、アーキテクチャーarm64の重複シンボルの問題が発生し、リンカーコードが終了コード1で失敗しました。constNSString 行を削除するとうまくいきました。


2

インクルードファイルを確認してください。誤って "filename.h"ではなく#filename.mをインポートしたため、この問題が発生しました。オートコレクト(タブ)では、 "h"ではなく "m"を使用しています。


どうもありがとうございました。この間違いを犯したことに気づかず、時間を費やしていたのです。おかげで再び👍
Supertecnoboff

1

エラーから、すべてのクラスが複数回表示されるように見えます。機能するクラスを見つけて削除してください。

AppDelegate.hおよび.mファイルを作成して、複数回作成しています。したがって、このエラーが発生します。最後に、私にとって問題なく機能しているクラスを見つけて削除します。


1

この問題を解決するには、ビルドフェーズに移動し、(facebookSDK、unityads)のような重複ファイルを検索して削除(拡張子file.o)してから、もう一度ビルドします。


0

私にとっては、sampleMethodViewController_Aで呼び出されるメソッドを作成し、ViewController_Bでも同じメソッドを作成しました。このエラーが発生したため、ViewController_Bのメソッド名をに変更しましたsecondSampleMethod。エラーを修正しました。

コードを減らし、多くの場所で同じコードを複製しないようにするための良い機能のようです。

No Commonブロックを「はい」から「いいえ」に変更してから、テスト可能性を「はい」から「いいえ」に変更しようとしましたが、うまくいきませんでした。ビルドフェーズでも重複ファイルを確認しましたが、重複ファイルはありません。


0

この問題は、メソッドの外側で.mの変数を遅延定義していたため、別の.mファイルで、メソッドの外側で同じ名前の別の変数を定義していたために発生しました。これにより、グローバル変数名の重複の問題が発生していました。


0

私にとっての問題は、手動でフレームワークを含めていたが、CocoaPodsに同じフレームワークを含めたことに気づかなかったことでした。どちらかを削除すると、問題は解消しました



0

「アーキテクチャarmv7の158の重複シンボル、アーキテクチャarm64の158の重複シンボル」というこのエラーを解決できました---これも取得している場合は、インポートしているファイルをコンパイルしようとしている、またはC ++コードまたはファイルへの参照を持つフレームワークまたは静的ライブラリを継承します。これを処理する簡単な方法は、.mファイルの拡張子を.mmに変更することです。これはObjective Cを使用している場合の処理​​方法ですが、Swiftではわかりません。

また、ビルド設定-「その他のリンカーフラグ」を-lc ++に更新できます。


0

Flutterでこれを試している人がいる場合は、ポッドの分解やポッドの初期化を行わないでください。

私が解決した方法は、フラッターをクリーンに実行して、フラッターを実行する-d [iOSデバイス]

希望は誰かを助けることができます。


0

Plz設定を変更します。

ステップ1:TARGETS-> Build Settings-> No Common Blocks-> Noに移動します

ステップ2:TARGETS-> Build Settings-> enable testability-> Noに移動します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.