gpt4 book ai didi

objective-c - 对 '__objc_class_name_Fraction' 的 undefined reference

转载 作者:搜寻专家 更新时间:2023-10-30 20:09:24 26 4
gpt4 key购买 nike

我有这些文件:

Project.m

#import "Fraction.h"

int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Fraction *fraction = [[Fraction alloc] init];
[fraction setNumerator: 2];
[fraction setDenominator: 3];
[fraction print];
NSLog(@"%g", [fraction value]);
[fraction release];
[pool drain];
return 0;
}

分数.m

#import "Fraction.h"

@implementation Fraction
-(void) setNumerator: (int) n {
numerator = n;
}

-(void) setDenominator: (int) d {
denominator = d;
}

-(void) print {
NSLog(@"%i/%i\n", numerator, denominator);
}

-(double) value {
return (double) numerator / denominator;
}
@end

分数.h

#import <Foundation/Foundation.h>

@interface Fraction: NSObject {
int numerator, denominator;
}

-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
-(void) print;
-(double) value;
@end

像这样安排在一个文件中:

Objective-C
|_Fraction.h
|_Fraction.m
|_Project.m

但是,当我运行它时(我正在使用 GNUstep),我得到了这个错误:

undefined reference to '__objc_class_name_Fraction'

最佳答案

此错误告诉您 Fraction.m 未编译或链接,因此当您构建项目时,未找到 Fraction 类。

如果您忘记将 Fraction.m 添加到您的 GNUmakefile 中,就会出现此错误。

您可能有一个如下所示的 GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = MyProject
MyProject_OBJC_FILES = Project.m

include $(GNUSTEP_MAKEFILES)/tool.make

您想将其更改为在 OBJC_FILES 行中包含 Fraction.m:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = MyProject
MyProject_OBJC_FILES = Project.m Fraction.m

include $(GNUSTEP_MAKEFILES)/tool.make

显然,您的 makefile 可能有所不同,但您明白了。确保在源文件列表中包含 Fraction.m

关于objective-c - 对 '__objc_class_name_Fraction' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com