2016-07-05 108 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.mAppDelegate.m(或也許AppDelegate.swift)包含功能main。只有一個main功能可以爲每個程序的存在,因爲它是唯一的入口點的任何C,Objective-C的,或斯威夫特程序。

的更多信息:

編譯的程序實際上是一系列的幾個獨立的步驟。

每個項目是由一系列的編譯單元的。在Objective-C中,每個.m文件都是一個編譯單元。在C中,它是.c文件。在夫特,所有.swift文件的組合爲一個模塊(相當於一個編譯單元的其它物質)。每一種獨立編制,產生了一系列的目標文件(.o,正如你在錯誤看到)。

您的程序編制,併成功地使其過去的這一步。

單個編譯單元的編譯之後,所產生的對象文件是一起通過程序稱爲接頭,以產生文件程序。在連接步驟中,接頭運行到一個錯誤,因爲這兩個main.o文件(從main.m編譯的目標)和AppDelegate-2D6246B5E95B9D9F.o文件(從AppDelegate.mAppDelegate.swift編譯的目標)包含用於符號_main的定義。鏈接器不知道選擇哪一個,所以會引發錯誤。