Ошибка Xcode: "main", ссылка из: неявная запись / запуск для основного исполняемого файла

Я получаю следующую ошибку, которая, похоже, исходит из чего-то внизу, связанного с "_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)

любая помощь была бы очень признательна.

4 ответов


Я проверил ваш проект. Вопрос простой, в вашем проекте нет . Я думаю, вы случайно удалили это.

Добавить новый .M файл для вашего проекта, назовите его main

и добавьте к нему следующий код:

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

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

также в вашем проекте информация.plist также отсутствует,поэтому вам нужно добавить новый.


добавить @UIApplicationMain в AppDelegate


мой случай был очень похож, но немного отличается. Решение было частично вызвано ответом @Midhun-MP выше.

в моем случае, я добавил версию tvOS моего приложения. Однако после добавления новой цели, основные.m не был выбран под целевым членством (таким образом, предупреждающие сообщения о Undefined symbols for architecture x86_64: "_main"). Проверил это и БАМ - я GTG.

спасибо @Midhun-MP.

main.m


Если я прав, вы используете симулятор для запуска приложения. Для запуска приложения на iOSSimulator требуется поддержка архитектуры i386. Ошибка, показывающая, как один ваш двоичный фреймворк для связывания, не поддерживает архитектуру i386. Это может быть фреймворк "SDWebImage" (я думаю). Попробуйте запустить приложение в реальном устройстве, а не симуляторе, или попробуйте загрузить фреймворк, который имеет точки входа i386.

другая возможность: убедитесь, что "AppDelegate" существующий в скомпилированном источнике. Надеюсь, это поможет вам ..