我收到了这个错误。怎么了?

时间:2016-07-05 21:27:51

标签: objective-c xcode swift

我收到以下错误。我为什么要这样做?

  

重复符号_main:       /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个用于体系结构x86_64 clang的重复符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

1 个答案:

答案 0 :(得分:1)

main.mAppDelegate.m(或许AppDelegate.swift)都包含函数main。每个程序只能存在一个main函数,因为它是任何C,Objective-C或Swift程序的唯一入口点。

更多信息:

程序的编译实际上是一系列单独的步骤。

每个项目都由一系列编译单元组成。在Objective-C中,每个.m文件都是一个编译单元。在C中,它是.c文件。在Swift中,所有.swift文件的组合是一个模块(相当于其他模块的编译单元)。其中每个都是独立编译的,以生成一系列目标文件(.o,如您在错误中所示)。

您的程序已编译并成功通过此步骤。

在编译各个编译单元之后,生成的目标文件通过名为链接器的程序链接,以生成文件程序。在链接步骤期间,链接器会遇到错误,因为main.o文件(从main.m编译的对象)和AppDelegate-2D6246B5E95B9D9F.o文件(从AppDelegate.m编译的对象或AppDelegate.swift)包含符号 _main的定义。链接器不知道要选择哪两个,因此会引发错误。