这是我在本网站的第一个问题,请耐心等待。我试着寻找答案但找不到任何相关的内容。
我在当前目录中有main.m,Person.h和Person.h文件。在main.m中我包含了Person.h。然后我尝试编译main.m,但它给出了一个错误,找不到Person对象。
这是main.m:
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// Create an instance of Person
Person *person = [[Person alloc] init];
[person setWeightInKilos:96];
[person setHeightInMeters:1.8];
float bmi = [person bodyMassIndex];
NSLog(@"person has a BMI of %f", bmi);
}
return 0;
}
Person.h:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
// 2 instance variables
float heightInMeters;
int weightInKilos;
}
// instance methods
- (void)setHeightInMeters:(float)h;
- (void)setWeightInKilos:(float)w;
- (float)bodyMassIndex;
@end
Person.m:
#import <Foundation/Foundation.h>
@implementation Person
- (void)setHeightInMeters:(float)h
{
heightInMeters = h;
}
- (void)setWeightInKilos:(float)w
{
weightInKilos = w;
}
- (float)bodyMassIndex
{
return weightInKilos / (heightInMeters * heightInMeters);
}
@end
这是我尝试使用'cc main.m -framework Foundation'编译时出现的错误:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Person", referenced from:
objc-class-ref in main-24c686.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我甚至尝试在PATH中添加当前目录,但它没有帮助。
提前感谢您的帮助。
答案 0 :(得分:2)
该错误与包含文件&#34; Person.h&#34;无关。问题是Person
找不到 class 。
原因是你没有添加&#34; Person.m&#34;将文件发送到命令行:
cc main.m Person.m -framework Foundation