私は今、上記のタイトルと同じ質問をしていますが、まだ正しい答えを見つけていません。私はエラーを得ました:
/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)
任意の助けは大歓迎です。
最後に このエラーの原因を見つけました。-ObjC
にOther Linker Flags
を追加しました。この値を削除すると、プロジェクトを正常に構築できますが、その理由はわかりません。誰もがこれを説明できますか?
アーキテクチャx86_64の75個の重複シンボル
同じ機能を2回ロードしたことを意味します。 -ObjC
からOther Linker Flags,
を削除すると問題が解消されるので、このオプションは関数が2回ロードされることを意味します。
テクニカルQ&Aより
このフラグにより、リンカは、Objective-Cのクラスまたはカテゴリを定義するライブラリ内のすべてのオブジェクトファイルをロードします。このオプションは通常、より大きな実行可能ファイルになりますが(アプリケーションに追加のオブジェクトコードがロードされるため)、既存のクラスのカテゴリを含む効果的なObjective-C静的ライブラリを正しく作成できます。
https://developer.Apple.com/library/content/qa/qa 1490/_index.html
私にとっては、 'No Common Blocks'をYesからNoに変更すると(Targets - > Build Settings - > Apple LLVM - Code Generation)、問題は解決した。
愚かですが、#import
ファイルを誤ってどこかで.m
編集していないことを確認してください。
私の場合は、このように定数文字列を定義するためのヘッダーファイルを作成しました。
NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
私はstatic
を使ってこのシナリオを解決しました:
static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
私は同じ問題を抱えています。 Xcode 7.2の[Project Target]> [Build Setting]> [No Common Blocks]で、[NO]に変更します。
これは私が2年前にObjective-Cで開発したプロジェクトの「推奨設定」ポップアップを受け入れたときに起こりました。
問題は、「推奨設定」アップデートを受け入れると、Xcodeが自動的にGCC_NO_COMMON_BLOCKS = YES;
などのビルド設定を変更または追加したことです。
これにより、私のアップデートしたプロジェクトではビルドがduplicate symbol
エラーで失敗しました。そのため、私は自分のビルド設定でNo Common Block
をNO
に変更し、エラーがなくなりました。
私は、受け入れられた答えが問題に触れているのを見つけました、しかし、私がそれを解決するのを助けませんでした、うまくいけば、この答えはこの非常にイライラする問題を助けるでしょう。
duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
17 duplicate symbols for architecture x86_64
"同じ関数を2回ロードしたことを意味します。他のリンカフラグから-ObjCを削除すると問題が消えるので、このオプションは関数が2回ロードされることを意味します。"
素人の言葉で言うと、これはプロジェクト内にまったく同じ名前の2つのファイルがあるということです。あるプロジェクトを別のプロジェクトに結合しているのでしょうか。どのフォルダが複製されているかを確認するには、 "duplicate symbols"エラーの上のエラーを見てください。私の場合はBLoginViewControllerでした。
たとえば、下の画像では、2つのBImageViewControllerがありますが、これが問題の原因でした。
削除するとすぐに問題は消えました:)
別のクラスで同じ名前のconst変数を宣言した場合も同様です。
message.mファイル内
const int kMessageLength = 36;
@implementation Message
@end
chat.mファイル内
const int kMessageLength = 20;
@implementation Chat
@end
他のリンカーフラグから-ObjCを削除するか、誤って.hではなく.mファイルをインポートしたかどうかを確認してください。
以下の手順で問題は解決しました。
重複を見つける最も早い方法は次のとおりです。
@implementationの下で同じ変数を複数のクラスで定義すると、この問題が発生する可能性があります。
私の場合は、同じ場所に2つのファイルがありました。
[ターゲット]> [ビルドフェーズ]> [ソースのコンパイル]を選択し、重複しているファイルを削除します。
Xcode 7.3で開かれたいくつかのレガシープロジェクトに関する私の状況は次のとおりです。
duplicate symbol _SomeEnumState in:
2つの無関係なファイルのリストが続きます。
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
私にとってそれを解決したのは、enum宣言を以下から変更することでした。
enum SomeEnumState {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
} SomeEnumState;
これに:
typedef NS_ENUM(NSUInteger, SomeEnumState) {
SomeEnumStateActive = 0,
SomeEnumStateUsed = 1,
SomeEnumStateHidden = 2
};
誰かがこれについての説明を持っているならば、私を啓発してください。
それは私のために働いた
私にとって、Xcode 8の推奨プロジェクト設定で、「No Common Blocks」をYESに更新すると、この問題が発生します。
私の場合、私は自分のプロジェクトで2つのmain()
メソッドを定義し、そのうちの1つを削除することで問題を解決しました。
Juice007と同様に、2つの異なる.mファイルでC型変数を宣言および初期化しました(インポートされませんでした)。
BOOL myVar = NO;
しかし、.mでも@implementationでも、変数を宣言して初期化するこのメソッドは、グローバルスコープを許可します。あなたのオプションは:
スコープをクラスに制限するために、静的として宣言します。
static BOOL myVar = NO;
初期化を削除します(これにより、2つのクラスがグローバル変数を共有します)。
BOOL myVar;
-(void) init{
myVar = NO;
}
プロパティとして宣言します。
@property BOOL myVar;
@interfaceで適切なiVarとして宣言します
@interface myClass(){
BOOL myVar;
}
@end
ポッドリポジトリを追加したときに同じエラーが発生しました
pod 'SWRevealViewController'
gitHubから既に追加されたソースコード(SWRevealViewController)のため。そのため、エラーはソースコードまたはpodリポジトリを削除することで修正されます。
ケース#2:
2回目は、constant in .hファイルを宣言したときにこのエラーが発生しました。
NSString * const SomeConstant = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...
今日、私は同じエラーを受けました。エラーの重要な単語はduplicate
です。私はそれを修正します。
1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :
3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear
誤って.mファイルをインポートしていないことを確認してください。プロジェクトウィンドウで派生データを削除してから、もう一度ビルドして実行することをお勧めします。
この問題を抱えている他の誰にとっても、私はこれらの答えのどれにも私の決心を見ませんでした。
手動で対処された.pbxprojマージの競合が発生した後(不十分ですが)、.pbxproj内の個々のクラスファイルへの参照が重複していました。 Project> Build Phases> Compile Sourcesからそれらを削除することは私のためにすべてを修正しました。
これが誰かに役立つことを願っています。
上記の解決法のどれも私のために働きません、私はちょうどそれを自分で直しました。
自分で作成したcore data model
のシンボルが重複していますが、.xcdatamodeld
インスペクタでCodegen
プロパティのClass Definition
を選択していますが、それが問題なのです。それから私はManual/None
を選び、それは修正されました。
これがあなたに役立つことを願っています!
Xcode 6.3.2の場合以下のようにすべての可能性をチェックしました
1:プロジェクトに.mファイルをインポートしていません。
2: から他のリンカフラグ から-ObjC
を削除。
3:自分の 派生データ をすべて削除しました。
それでも私は同じエラーを受けています。.pch
ファイルから変数の宣言を削除することでこのエラーを取り除きました 。私の場合は、.pch
ファイルでAppDelegate
オブジェクトを宣言しました。最後に私はエラーを引き起こす理由を見つけました。だから私は.pchファイルと私のプロジェクト作業魅力から任意の変数の宣言を削除します。
このエラーを引き起こすもう一つの愚かな間違いはファイルの繰り返しです。誤っていくつかのファイルを2回コピーしました。最初にTargets - > Build Phases - > Compile sourcesに行きました。そこに私は二度そのリスト上のいくつかのファイルとその場所に気づいた。
私は.m
ファイルでconst値を定義したためです。しかし、このconst値を含む別の.m
ファイルを定義しました。つまり、同じconst値が2つあるということです。このエラーが表示されます。そして私の解決策はconst value.suchの前にキーワード "static
"を追加することです:
static CGFloat const btnConunt = 9;
そして、私はそれをこのエラーを報告しないプロジェクトをビルドします。
私は私がやったのと同じエラーに直面する
1.重複シンボルファイル(クラス名またはフレームワーク名)を、行の上に表示されている末尾からコピーします(アーキテクチャx86_64の場合は重複シンボル)。
2. Find Navigatorに貼り付けてEnterキーを押します
クラスが重複していることがわかりました。重複したクラスを削除して実行しました。
きっとあなたのお役に立てばと思います。
私は同じエラーを得た アーキテクチャx86_64のための3つの重複シンボル
私の場合は、同じプロジェクトの別のファイルからコードをコピーしました。 A.mファイルをB.mにコンパイルした後、コンパイル後にエラーが発生しました。グローバル変数の名前を変更することでエラーを解決しました。
私の場合、このエラーは両方のファイルで同じグローバル変数を宣言しているために起こりました。
私が自分のプロジェクトの中にlobプロジェクトを統合していたときにも、同じ問題が起こります。
実際にはlobプロジェクトにもAFNetworkingファイルがありますので、lobプロジェクトから.mファイルを削除します。
実際には.mファイルは私のプロジェクトのPOd/AFNetworking/.mファイルと競合しています
このエラーは通常、ライブラリまたはファイルを2回リンクしたときに発生します。エラーの説明には、重複したファイルの名前が表示されます。重複していないことを検索して確認できます。重複が見つかった場合は、安全のためにそれらのいずれかへの参照を削除してください。
1.ビルドフェーズに移動2.ファイル名を検索3.重複の削除 - >エラーが消えます。
見つからない場合は、「file.m」を検索してください。#import「file.m」が表示されている場合は、この行を消去してください。
最近、エラーの原因を探す頭痛がありました。私は自分のアプリがコンパイルしたくないことに気付いたとき、私は疑問に思いました。それは、単に、異なるクラスで以下のコードスニペットがあったからです。
dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
NSTimeInterval interval;
double second, subsecond;
struct timespec time;
dispatch_time_t milestone;
interval = [date timeIntervalSince1970];
subsecond = modf(interval, &second);
time.tv_sec = second;
time.tv_nsec = subsecond * NSEC_PER_SEC;
milestone = dispatch_walltime(&time, 0);
return milestone;
}
誰かに役立つかもしれないことを願っています。
他のリンカーフラグから-all_loadを削除します。私のプロジェクトで動作します
ヘッダファイルの代わりに[ViewController.m]をインポートしていないことを確認してください。
#import "ViewController.m"
この答えはなぜこの問題が発生するかについてよく説明したものです:
Xcode C++ ::アーキテクチャx86_64の重複シンボル
私の意見では、フラグをオフにしたりXcodeの設定を変更したり、コードを読み直したり、問題を解決する必要はありません。設定を変更すると、炎症ではなく原因が落ち着くだけです。
あなたはプラグインフォルダの下のすべてのプラグインをクリアしようとすることができますか?
私のために働いています
追加したポッドとライブラリを確認してください。 1つ以上のライブラリが繰り返される必要があります。片側から取り外してください。問題を修正します。また、影響を受けるライブラリは、x-codeエラーメッセージの詳細にリストされます。
私の場合、私は自分のコアデータモデルのエンティティをオブジェクトと同じ名前にしました。それで、私はオブジェクト "Event.h"を定義し、同時にこのエンティティを "Event"と呼びました。私はエンティティの名前を変更しました。
このエラーは、 .cpp fileの代わりに header fileにスコープ解決演算子を持つクラスメソッドを実装したときに起こりました。
PS:そして私はMacbook Yosemite上でC++でプログラミングしていた。