为什么clang在#include""中找不到.h文件?在同一个目录中?

时间:2014-04-15 20:09:08

标签: objective-c

这是我在本网站的第一个问题,请耐心等待。我试着寻找答案但找不到任何相关的内容。

我在当前目录中有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中添加当前目录,但它没有帮助。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

该错误与包含文件&#34; Person.h&#34;无关。问题是Person 找不到 class

原因是你没有添加&#34; Person.m&#34;将文件发送到命令行:

  cc main.m Person.m -framework Foundation