ld: 找不到入口点(_main),适用于架构x86_64:Xcode 9。

57

最近我下载了Xcode 9,并创建了一个样例iPhone应用程序,但该应用无法构建,因为它显示以下错误:

ld: entry point (_main) undefined. for architecture x86_64

我在网上搜索了相关内容,并尝试了一些方法,如删除派生数据、重新启动Xcode等,但问题仍未得到解决。

有人遇到过类似的问题吗?


这个应用是用另一个Xcode创建的吗? - Durdu
不。但我也用新的Xcode打开了旧项目,它们运行得很好。 - Meluha
13个回答

95

添加 @main 解决了问题。

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
...
}

@UIApplicationMainSwift 5.3 之前使用。


我不小心注释掉了那一行,取消注释后问题得到解决! - snowskeleton
1
关于@UIApplicationMain@main之间的区别的解释:https://stackoverflow.com/questions/67429098/what-is-the-differnce-between-main-and-uiapplicationmain - undefined

80

发现“AppDelegate”不是“target”成员的一部分。


4
你能否详细说明一下?我不太理解你所确定的内容。 - user6159419
8
耶稣。难以相信这是问题的原因。 - magneticrob
4
他的意思是在XCode中,点击项目导航器中的项目,然后进入“Build Phases”,然后进入“Compile Sources”,确保AppDelegate被包括在编译源代码之中。 - Alan S
1
点击AppDelegate->转到文件检查器->检查目标成员资格 - Mak K
1
谢谢,我没想到问题会这么简单,我的proj文件在rebase期间出了问题,新添加的MyApplication.swift没有被添加到目标中。 - infinity_coding7
显示剩余2条评论

39

我曾经遇到过同样的问题。以下是我解决它的方法: 选择你的项目,然后转到“Build Setting” -> 搜索Mach-O类型更改为-> Bundle。 希望这能帮助你!


谢谢,这个错误一点都没帮上忙。如果没有Stack Overflow,我真不知道该怎么办。 - user3296487

12

在我的情况下,我在AppDelegate.swift中缺少了@UIApplicationMain。将其添加到class AppDelegate之前,我的应用程序再次开始构建。


由于我的旧笔记本电脑(因此被困在Catalina上),我正在尝试将Big Sur(等等Xcode和Macbook Pro)回溯到Macbook Pro(2012年中),它处于两个开发平台之间的不稳定状态。这是最后一个构建(链接器)问题。 - mobibob

5
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  ...
}

Swift 5

确保你的 appDelegate 类开头有 @main。


3

确保"AppDelegate"是"target"成员的一部分。

点击AppDelegate -> 属性检查器 -> 勾选目标成员资格

输入图像描述


3
请打开你的AppDelegate.swift类并检查是否已经写入@UIApplicationMain。如果没有,请在这个类中在UIKit "@UIApplicationMain"导入下面添加这行代码。
像这样: @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { ... }

3
添加 @UIApplicationMain 解决问题。它的内部实现可以自行完成,这种情况下,您不需要添加 @UIApplicationMain。只需创建一个名为 main 的 swift 文件,并将以下代码放入其中即可按预期工作。
import UIKit

UIApplicationMain(CommandLine.argc, 
    UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc)), nil, NSStringFromClass(AppDelegate.self))

2
在我的情况下,我不小心删除了我的appDelegate文件 :)

2

针对框架(动态库)

如果您在构建框架时遇到此错误,则在构建设置 > Mach-O 类型下选择动态库

已在 Xcode 版本 11.6(11E708)上测试

最好的祝愿。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接