2016-07-05 7 views
-3

以下のエラーが発生します。なぜ私はそれを手に入れますか?このエラーが発生しています。なにが問題ですか?

Duplicate symbol _main in: /Users/AlexBomnd/Library/Developer/Xcode/DerivedData/Backpack-gcnxteerautalugwepzkevaqgtxe/Build/Intermediates/Backpack.build/Debug-iphonesimulator/Backpack.build/Objects-normal/x86_64/main.o /Users/AlexBomnd/Library/Developer/Xcode/DerivedData/Backpack-gcnxteerautalugwepzkevaqgtxe/Build/Intermediates/Backpack.build/Debug-iphonesimulator/Backpack.build/Objects-normal/x86_64/AppDelegate-2D6246B5E95B9D9F.o ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

答えて

1

両方main.m及びAppDelegate.m(あるいはAppDelegate.swift)関数mainを含みます。プログラムごとに1つのmain関数しか存在できません。これはC、Objective-C、Swiftプログラムの唯一のエントリポイントです。

詳細情報:プログラムの

コンパイルは、実際にいくつかの独立した一連のステップです。

各プロジェクトは、一連のコンパイル単位で構成されています。 Objective-Cでは、各ファイル.mはコンパイル単位です。 Cでは、それは.cファイルです。 Swiftでは、すべての.swiftファイルの組み合わせは1つのモジュール(他のコンパイル単位に相当)です。これらはそれぞれ独立してコンパイルされ、一連のオブジェクトファイル(エラーで表示されるように.o)を生成します。

あなたのプログラムはコンパイルされ、このステップを過ぎて正常に実行されました。

は、個々のコンパイル単位のコンパイル後、生成されるオブジェクトファイルは、ファイルのプログラムを生成するために、リンカと呼ばれるプログラムで一緒にをリンクされています。 main.oファイル(main.mからコンパイルされたオブジェクト)とAppDelegate-2D6246B5E95B9D9F.oファイル(AppDelegate.m又はAppDelegate.swiftからコンパイルされたオブジェクト)の両方がシンボル_mainの定義が含まれているため、連結工程中、リンカーはエラーに実行されます。リンカーはどちらを選択するのかわからないので、エラーが発生します。

関連する問題