Xcode error: "_main", referenced from: implicit entry/start for main executable

Xcode error: "_main", referenced from: implicit entry/start for main executable

我收到以下错误,它似乎来自底部与“_main”有关的内容。

Ld /Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Products/Debug-iphonesimulator/TownHall\ iPhone.app/TownHall\ iPhone normal i386
    cd "/Users/jianglin/Desktop/TownHall iPhone"
    export IPHONEOS_DEPLOYMENT_TARGET=8.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Products/Debug-iphonesimulator -F/Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Products/Debug-iphonesimulator -filelist /Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Intermediates/TownHall\ iPhone.build/Debug-iphonesimulator/TownHall\ iPhone.build/Objects-normal/i386/TownHall\ iPhone.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-AFNetworking -lPods-Masonry -lPods-SDWebImage -framework CoreGraphics -framework Foundation -framework ImageIO -framework MobileCoreServices -framework Security -framework SystemConfiguration -framework UIKit -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.1 -lPods -Xlinker -dependency_info -Xlinker /Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Intermediates/TownHall\ iPhone.build/Debug-iphonesimulator/TownHall\ iPhone.build/Objects-normal/i386/TownHall\ iPhone_dependency_info.dat -o /Users/jianglin/Library/Developer/Xcode/DerivedData/TownHall_iPhone-bdlgipvgaapgjhglhromfvcubbxz/Build/Products/Debug-iphonesimulator/TownHall\ iPhone.app/TownHall\ iPhone

Undefined symbols for architecture i386:
  "_main", referenced from:
     implicit entry/start for main executable
     (maybe you meant: _OBJC_IVAR_$_PostTableViewCell._mainTextView, _OBJC_IVAR_$_ConfirmationViewController._mainLabel , _OBJC_IVAR_$_SignInViewController._mainLabel , _OBJC_IVAR_$_SignUpViewController._mainLabel )
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如有任何帮助,我们将不胜感激。

如果我是正确的,您正在使用模拟器 运行 应用程序。 运行ning app on iOSSimulator需要i386架构的支持。错误显示您的二进制链接框架不支持 i386 架构。这可能是框架'SDWebImage'(我猜的)。请尝试运行在真实设备而非模拟器中的应用程序,或尝试下载具有i386入口点的框架。

另一种可能性是:验证 "AppDelegate" 是否存在于编译后的源代码中。希望这对你有帮助..

我检查了你的项目。问题很简单,你的项目中没有 main.m 文件。我想你不小心删除了那个。

向您的项目添加一个新的 .m 文件,将其命名为 main

并向其中添加以下代码:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

同样在您的项目中 info.plist 也丢失了,因此您需要添加一个新的。

将@UIApplicationMain 添加到 AppDelegate

我的情况非常相似,但略有不同。该解决方案部分是由@Midhun-MP 上面的回答提示的。

在我的例子中,我添加了我的应用程序的 tvOS 版本。但是,在添加新目标后,main.m 未在目标成员资格下选择(因此,有关 Undefined symbols for architecture x86_64: "_main" 的警告消息)。检查了一下,砰——我是 GTG。

感谢@Midhun-MP。

我 运行 在一次大升级后进入这个问题,看到这么多 Github 的答案非常烦人,建议 RN 用户开始一个新项目来解决这个问题。

首先,以下是 运行 出现此错误时我注意到的构建设置以及应设置的设置:

应用程序目标的构建阶段

Link 带库的二进制文件

  • JavaScriptCore.framework
  • libPods-app_name.a

编译源代码

  • AppDelegate.m
  • main.m

应用程序目标的构建设置

Linking OTHER_LDFLAGS

  • ObjC
  • lc++
  • lz

如果设置看起来没问题,但构建时仍然收到错误,下一步是检查主文件本身。

Main.m 文件位于 ios/app_name 文件夹中,在文件本身中,您将找到引用的主要方法。如果此文件有问题(丢失、损坏),您可以使用以下代码重新创建它:

main.m 0.23.1 - 0.62.0 来自 Upgrade Helper

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char * argv[]) {
  @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  }
}

我真的希望这对以后的人有所帮助。

我 运行 尝试归档一个 Mac Catalyst 应用程序 (Swift 5 / Xcode 11.5),直到尝试归档为止工作正常并能够 运行 / 通过 My Mac.

成功构建

从来没有完全能够找到最终修复它的根本原因,但是将我所有的根级项目文件(包括 AppDelegate.swift)移动到一个组中解决了这个问题并允许我存档成功

之前:

Project.xcodeproj
|--- Project
    |--- AppDelegate.swift
    |--- SceneDelegate.swift
    |--- Assets.xcassets
    |--- ViewControllers
        |--- ViewController.swift

之后:

Project.xcodeproj
|--- Project
    |--- AppDelegate
        |--- AppDelegate.swift
        |--- SceneDelegate.swift
        |--- Assets.xcassets
    |--- ViewControllers
        |--- ViewController.swift