Компиляция программы Objective-C - PullRequest
0 голосов
/ 18 мая 2009

У меня проблемы с компиляцией следующей программы. Я использую "gcc -framework Foundation inherit8.1m" и получаю следующие ошибки. Что я делаю неправильно? Спасибо.

ld предупреждение: в файле legit8.1m файл не требуемой архитектуры Не определено символы: "_main", на которые ссылаются из: начало в crt1.10.5.o ld: символ (ы) не найдены collect2: ld возвращен 1 статус выхода

// Simple example to illustrate inheritance


#import <Foundation/Foundation.h>

// ClassA declaration and definition

@interface ClassA: NSObject
{
   int  x;
}

-(void) initVar;
@end

@implementation ClassA
-(void) initVar
{
  x = 100;
}
@end

// Class B declaration and definition

@interface ClassB : ClassA
-(void) printVar;
@end

@implementation ClassB
-(void) printVar
{
  NSLog (@"x = %i", x);
}
@end

int main (int argc, char *argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   ClassB  *b = [[ClassB alloc] init];

   [b initVar];     // will use inherited method
   [b printVar];    // reveal value of x;

   [b release];

   [pool drain];
   return 0;
}

Ответы [ 3 ]

4 голосов
/ 18 мая 2009

Попробуйте переименовать ваш исходный файл во что-то, что заканчивается просто .m. Ваш файл имеет расширение .1m, которое, похоже, сбивает с толку компилятор.

1 голос
/ 18 мая 2009

Мне было проще использовать GNUmakefile в Linux (не уверен, что это ваш случай). У меня есть инструмент командной строки LogTest, скомпилированный из source.m:

> cat source.m
#import <Foundation/Foundation.h>

int main(void)
{
    NSLog(@"Executing");
    return 0;
}

> cat GNUmakefile
include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = LogTest
LogTest_OBJC_FILES = source.m

include $(GNUSTEP_MAKEFILES)/tool.make

> make
Making all for tool LogTest...
 Compiling file source.m ...
 Linking tool LogTest ...

> ./obj/LogTest
2009-05-17 20:05:36.032 LogTest[9850] Executing
1 голос
/ 18 мая 2009

Вы неправильно назвали свой файл. Это должно быть наследовать 8.m, а не наследовать 8. 1 м.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...