“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正确的选项来将这些文件或目录添加到你的项目中。 确保选中“添加到目标”选项。
如果您错过了检查该选项,则需要执行以下步骤:
- selectYourProjectName
- selectTARGETS
- select构build阶段
- 在“编译源”部分添加.m类
我原来的答案
如果在项目中拖动这些类,可能是问题所在。
为了避免编译错误,改为使用“添加文件到您的项目名称”。
假设您的桌面上有一个名为“SVProgressHUD”的.h和.m文件的目录。
现在你必须:
- 删除以前的文件(包括.h和.m)
- 点击右键在您的项目
- select“SVProgressHUD”dir与“将文件添加到您的项目名称”(select以下checkbox选项: 目标复制项目…和文件夹为任何…创build组)
希望能帮助到你。
这听起来像SVProgressHUD.m
未启用您的目标。 在左侧窗格中的项目导航器中单击它,然后在右侧窗格中的文件检查器中查看,确保您正在构build的目标旁边有一个打勾。
检出这个链接。 请参阅此链接中接受的答案:
架构i386的未定义符号:_OBJC_CLASS _ $ _ SKPSMTPMessage“,引用来自:错误
如果仍然没有帮助,请参阅上述链接中的艾伦派克的答案。 尝试删除和添加QuartzCore
框架在您的应用程序。
希望这可以帮助你。
- 检查是否有任何可以在不知道的情况下删除的对象
- 检查你的所有对象是否连接,例如,如果你有一个MapView但没有连接,它崩溃了
- 如果这不起作用,请尝试清洁应用程序,或者重新启动iPhone和Xcode
我通过更改Unity编辑器中的“播放器设置”来解决此问题。
菜单path: PlayerSettings> OtherSettings>脚本后端从Mono2x更改为IL2CPP。
第二个变化是把build筑变成普遍的。