2016-07-05 105 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的定义。链接器不知道选择哪一个,所以会引发错误。