【问题标题】:Xcode error: "_main", referenced from: implicit entry/start for main executableXcode 错误:“_main”,引用自:主可执行文件的隐式条目/启动
【发布时间】:2015-05-06 14:38:44
【问题描述】:

我收到以下错误,这似乎来自与“_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)

任何帮助将不胜感激。

【问题讨论】:

    标签: ios xcode clang


    【解决方案1】:

    我在尝试存档 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
    

    【讨论】:

      【解决方案2】:

      我在大升级后遇到了这个问题,看到 Github 上有这么多答案建议 RN 用户开始一个新项目来解决这个问题,这让我很恼火。

      首先,这是我遇到此错误时注意的构建设置以及应设置的设置:

      应用目标的构建阶段

      将二进制文件与库链接

      • JavaScriptCore.framework
      • libPods-app_name.a

      编译源代码

      • AppDelegate.m
      • main.m

      应用目标的构建设置

      链接 OTHER_LDFLAGS

      • ObjC
      • lc++
      • lz

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

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

      ma​​in.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]));
        }
      }
      

      我真的希望这对将来的人有所帮助。

      【讨论】:

        【解决方案3】:

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

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

        感谢@Midhun-MP。

        【讨论】:

          【解决方案4】:

          将@UIApplicationMain 添加到 AppDelegate

          【讨论】:

            【解决方案5】:

            我检查了您的项目。问题很简单,在您的项目中没有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 也丢失了,因此您需要添加一个新的。

            【讨论】:

            • 谢谢,我只是忘了添加到目标:\
            【解决方案6】:

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

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

            【讨论】:

            • 您好,感谢您的回复,我注意到 libPods.a 文件是红色的,这会影响它吗? AppDelegate 在那里,所以应该没问题。如果没有设备模拟器,我没有可以工作的 iphone 试试
            猜你喜欢
            • 1970-01-01
            • 2021-10-17
            • 1970-01-01
            • 2022-12-12
            • 1970-01-01
            • 1970-01-01
            • 2011-07-13
            • 1970-01-01
            • 2011-08-02
            相关资源
            最近更新 更多