【问题标题】:Undefined symbols: "_OBJC_CLASS_$ error未定义的符号:“_OBJC_CLASS_$ 错误
【发布时间】:2011-10-21 02:12:57
【问题描述】:

我已经浏览了无数关于这个错误的帖子:

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

BoxViewUIView 的子类,并包含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 时,错误消失了。有谁知道我需要在这里改变什么?我浏览了很多关于此的帖子,但大多数答案都说它与链接相关,但我尝试勾选和取消勾选某些框但没有成功。我想知道错误是否在我的代码中?任何建议将不胜感激!

【问题讨论】:

    标签: objective-c ios xcode linker


    【解决方案1】:

    通常,当BoxView 的代码未正确编译到您的目标中时,会发生这种情况。

    您需要确保您正在构建的目标已为您的BoxView.m 实现文件选中了相应的复选框。您的问题表明您已经尝试过了,但为了清楚起见,这里有一个屏幕截图(来自 Xcode 4)。

    “清洁和构建”也永远不会受到伤害。

    【讨论】:

    • 谢谢,确实尝试了干净的构建,但没有遇到 BoxView.m 的复选框。我在哪里可以找到该复选框?我正在查看构建设置,但没有看到它。我正在使用旧版本的 X-Code,X-Code 3,所以我认为我的版本不符合您发送的屏幕截图跨度>
    • 哦,实际上,我刚刚找到它。不知道在 Xcode 4 中是否是这种情况,但在 Xcode 3 中,您可以将 .m 文件拖放到目标中
    • 有时当我将文件添加到项目中时,在构建项目时它们不会被编译。在 Xcode 4 中,我明确地将它们添加到“构建阶段”->“编译源”下。为什么默认情况下(有时)不设置这些,我不知道。
    • @cms 如果这确实解决了(或帮助解决)您的问题,如果您能接受答案,那就太好了。 :-)
    • 我不知道你是如何用这个答案度过我的一天的。非常感谢分享知识。
    【解决方案2】:

    我只想补充一点,Ben Mosher 的回答是完全正确的。但是还有另一种方法可以在 Target 设置中包含要构建的文件。

    【讨论】:

    • 在 Xcode 7 中的工作方式非常相似,但您可以从给定选定目标的 General 选项卡中访问 Linked Frameworks and Libraries
    【解决方案3】:

    添加场景

    如果您的项目具有模块依赖项(框架),请在构建主项目之前重新构建它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2020-02-15
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多