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

我正在尝试实施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]; } 

编辑

我提供的答案(请参见我的原始答案 )只能解决问题,但这不是正确的解决scheme。 为了正确的解决scheme,请参阅Jim的答案

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

Parth Bhatt链接。

为了完整性

试验一下,我发现当你在项目中拖放文件或目录时,Xcode(4.3.1)会要求你select正确的选项来将这些文件或目录添加到你的项目中。 确保选中“添加到目标”选项。

如果您错过了检查该选项,则需要执行以下步骤:

  1. selectYourProjectName
  2. selectTARGETS
  3. select构build阶段
  4. 在“编译源”部分添加.m类

我原来的答案

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

为了避免编译错误,改为使用“添加文件到您的项目名称”。

假设您的桌面上有一个名为“SVProgressHUD”的.h和.m文件的目录。

现在你必须:

  1. 删除以前的文件(包括.h和.m)
  2. 点击右键在您的项目
  3. select“SVProgressHUD”dir与“将文件添加到您的项目名称”(select以下checkbox选项: 目标复制项目…和文件夹为任何…创build组)

希望能帮助到你。

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

检出这个链接。 请参阅此链接中接受的答案:

架构i386的未定义符号:_OBJC_CLASS _ $ _ SKPSMTPMessage“,引用来自:错误

如果仍然没有帮助,请参阅上述链接中的艾伦派克的答案。 尝试删除和添加QuartzCore框架在您的应用程序。

希望这可以帮助你。

  1. 检查是否有任何可以在不知道的情况下删除的对象
  2. 检查你的所有对象是否连接,例如,如果你有一个MapView但没有连接,它崩溃了
  3. 如果这不起作用,请尝试清洁应用程序,或者重新启动iPhone和Xcode

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

菜单path: PlayerSettings> OtherSettings>脚本后端从Mono2x更改为IL2CPP。

第二个变化是把build筑变成普遍的。