Objective c 未定义的符号:"_OBJC_类_$error
我已经浏览了无数关于这个错误的帖子:Objective c 未定义的符号:"_OBJC_类_$error,objective-c,ios,xcode,linker,Objective C,Ios,Xcode,Linker,我已经浏览了无数关于这个错误的帖子: Undefined symbols: "_OBJC_CLASS_$_BoxView", referenced from: objc-class-ref-to-BoxView in ViewMovingViewController.o ld: symbol(s) not found collect2: ld returned 1 exit status BoxView是UIView的一个子类,并且包含了UIKit框架BoxView.h已导入到ViewCo
Undefined symbols:
"_OBJC_CLASS_$_BoxView", referenced from:
objc-class-ref-to-BoxView in ViewMovingViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
BoxView
是UIView
的一个子类,并且包含了UIKit
框架<代码>BoxView.h已导入到ViewController中
ViewController包含以下代码:
-(void) addBoxViewAtLocation:(CGPoint)point {
CGRect rect;
rect.origin.x = point.x;
rect.origin.y = point.y;
rect.size.width = 80;
rect.size.width = 40;
BoxView *newView = [[BoxView alloc] initWithFrame:rect];
newView.backgroundColor = [UIColor yellowColor];
[mainView addSubview:newView];
}
而BoxView
包含以下代码:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// no further initialization
}
return self;
}
这是导致错误的代码行,来自上面的代码:
BoxView *newView = [[BoxView alloc] initWithFrame:rect];
当我在该行中将
BoxView
更改为UIView
时,错误消失了。有人知道我需要改变什么吗?我已经看过很多关于这个的帖子,但是大多数的答案都说它与链接有关,但是我试着勾选和取消勾选某些框,但没有成功。我想知道我的代码中是否有错误?如有任何建议,将不胜感激 通常,当BoxView
的代码未正确编译到目标中时,会发生这种情况
您需要确保为您的BoxView.m
实现文件选中了正在构建的目标对应的复选框。您的问题表明您已经尝试过了,但为了清晰起见,这里有一个屏幕截图(来自Xcode 4)
“干净整洁”也没有坏处。我只想补充一点,本·莫舍的答案是完全正确的。但是,还有另一种方法可以在目标设置中包含要构建的文件
新增场景
如果您的项目具有模块依赖项(框架),请在构建主项目之前重新构建它们。谢谢,我们确实尝试了干净的构建,但没有遇到BoxView.m的复选框。。我在哪里能找到那个滴答声?我正在查看构建设置,但没有看到它。。我正在使用旧版本的X-Code,X-Code 3,所以我认为我的版本不符合您发送的屏幕截图。哦,事实上,我刚刚找到了它。不知道在Xcode 4中是否如此,但在Xcode 3中,您可以直接将.m文件拖放到target中。有时,当我将文件添加到项目中时,它们在项目生成时不会被编译。在Xcode 4中,我显式地将它们添加到“构建阶段”->“编译源代码”下。为什么默认情况下(有时)没有设置这些选项,我不知道。@cms如果这确实解决了(或帮助了)您的问题,如果您能接受答案,那就太好了。:-)我说不出你是怎么回答我的。非常感谢您分享这些知识。Xcode 7中的工作原理非常相似,但是您可以从给定选定目标的
常规选项卡访问链接的框架和库。