xcode上的架构x86_64错误的未定义符号

时间:2015-03-21 13:29:23

标签: ios objective-c xcode

我有一个简单的项目,在我的基本ViewController.m上我试图通过以下方式转移到另一个UIViewController

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
...
}

- (void)addAlarmBrick {
NewAlarmViewController *navc = [[NewAlarmViewController alloc] init];
[self presentViewController:navc animated:YES completion:nil];
}

我的项目中有NewAlarmViewController,目标成员资格中列出了.m文件。

这是完整的错误消息:

Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NewAlarmViewController", referenced from:
 objc-class-ref in ViewController.o ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在这里做错了什么?

修改

添加两个文件的设置:

.m文件:

.m

.h文件:

enter image description here

4 个答案:

答案 0 :(得分:1)

嗯,事实证明错误没有将以下内容添加到相关文件中:

@implementation NewAlarmViewController


@end

我不知道为什么必须添加@implementation,但必须是。

答案 1 :(得分:0)

转到所有设置,选择项目并在构建选项下检查c / c ++ / obj c的体系结构和编译器,如屏幕截图所示。

答案 2 :(得分:0)

听起来您的项目中可能包含一个仅为ARM编译的库,并且不提供在模拟器上运行的目标代码。您是否在项目中包含了任何第三方库? (或者来自第三方库的NewAlarmViewController?)

答案 3 :(得分:0)

也许Xcode搞砸了。您是否已尝试从项目中删除NewAlarmViewController并重新读取它? - >选择.h和.m文件,按删除,删除引用,然后再将它们拖到项目中。

同样清理构建文件夹(cmd + alt + shift + k)并重建项目。