Iphone “Apple Mach-O链接器命令失败,退出代码为1”

Iphone “Apple Mach-O链接器命令失败,退出代码为1”,iphone,ios,multithreading,Iphone,Ios,Multithreading,我正在尝试实施SVProgressHUD活动指示器。我将这些类复制到我的项目中,并将以下代码添加到我的appDelegate中,但无法找出它崩溃的原因 我发现他们有以下错误,但不确定在哪里可以修复: Undefined symbols for architecture i386: "_OBJC_CLASS_$_SVProgressHUD", referenced from: objc-class-ref in QuotesAppDelegate.o ld: symbol(s) not found

我正在尝试实施SVProgressHUD活动指示器。我将这些类复制到我的项目中,并将以下代码添加到我的appDelegate中,但无法找出它崩溃的原因

我发现他们有以下错误,但不确定在哪里可以修复:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SVProgressHUD", referenced from:
objc-class-ref in QuotesAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
代码如下:

#import "SVProgressHUD.h"

@implementation QuotesAppDelegate


- (void)startLoading
{
    //call this in your app delegate instead of setting window.rootViewController to your main view controller
    //you can show a UIActivityIndiocatorView here or something if you like
    [SVProgressHUD show];
    [self performSelectorInBackground:@selector(loadInBackground) withObject:nil];
}

- (void)loadInBackground
{
    //do your loading here
    //this is in the background, so don't try to access any UI elements
    [self populateFromDatabase];

    [SVProgressHUD dismiss];

    [self performSelectorOnMainThread:@selector(finishedLoading) withObject:nil waitUntilDone:NO];
}

- (void)finishedLoading
{
    //back on the main thread now, it's safe to show your view controller
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}


- (void)applicationDidFinishLaunching:(UIApplication *)application {

[self copyDatabaseIfNeeded];

    [self startLoading];

}
检查是否有以前可以在不知情的情况下删除的对象 检查您的所有对象是否都已连接,例如,如果您有地图视图但没有连接,它将崩溃 如果这不起作用,请尝试清理应用程序,或者只是重新启动iPhone和Xcode 编辑

我提供的答案只解决了问题,但不是正确的解决方案。有关正确的解决方案,请参见Jim的答案

听起来你的目标没有启用SVProgressHUD.m。点击 它位于左侧窗格的项目导航器中,然后查看 右窗格中的文件检查器,以确保下一步有勾号 到您正在构建的目标

或Parth Bhatt链接

为了完整起见

通过一点实验,我发现当您在项目中拖放文件或目录时,Xcode 4.3.1会要求您选择正确的选项,将这些文件或目录添加到项目中。确保选中了“添加到目标”选项

如果未选中该选项,则需要执行以下步骤:

选择您的项目名称 选择目标 选择构建阶段 在编译源代码部分添加.m类 我最初的答案

如果在项目中拖动这些类,可能就是问题所在

若要避免编译错误,请改用“将文件添加到项目名”

假设您的桌面上有一个名为SVProgressHUD的目录,其中包含.h和.m文件

现在你必须:

删除以前的.h和.m文件 在项目中单击鼠标右键 选择SVProgressHUD dir并将文件添加到项目名称选择以下复选框选项:目标复制项目。。。和文件夹为任何。。。
希望有帮助。

听起来您的目标没有启用SVProgressHUD.m。在左侧窗格的“项目导航器”中单击它,然后在右侧窗格的“文件检查器”中查看,以确保在正在构建的目标旁边有一个勾号。

签出此链接。请参阅此链接中的已接受答案:

如果仍然没有帮助,请参考上面链接中艾伦·派克的答案。尝试在应用程序中删除并重新添加QuartzCore框架


希望这对您有所帮助。

我通过在Unity编辑器中更改播放器设置来解决此问题

菜单路径: PlayerSettings>OtherSettings>Scripting后端从Mono2x更改为IL2CPP


第二个变化是将体系结构更改为universal。

您是否记得将QuartzCore框架添加到您的项目中?是的,添加了QuartzCore框架以及CoreGraphics.framework谢谢,就这样。我从示例项目中拖拽了这些文件,当我删除这些文件,然后通过Xcode添加它们时,它就像一个符咒。将类拖拽到项目中和通过菜单添加文件是一样的。您描述的选项无法解决此问题。很可能是您在第一次尝试时没有注意到目标未被锁定,而在第二次尝试时更正了它。你所描述的程序是一个骗人的把戏。您应该理解并解决问题,而不是简单地删除和重新添加文件,直到您正确地处理为止。@Jim您完全正确。但是,因为我今天早上使用了这个变通方法,所以我发布了一个适合我的解决方案。是的,这只是一个解决办法,我不知道正确的解决方案。谢谢你的解释。这不是一个解决办法。只有在第二次启用目标时,它才能解决问题,这是您没有提到的。它意外地解决了这个问题。有人可能会按照你的指示重复十次,除非他们选择了目标,否则无法解决问题。此外,你所说的大部分都是不正确的,你所描述的选择可能会导致不必要的行为。这是对货物的崇拜和误导,让人们认为事情不是真的。@Jim为了完整起见,我在我的问题中添加了一个编辑。