# Compiler de l'Objective-C en ligne de commande



## boulifb (18 Juin 2007)

Bonjour tout le monde,

Voilà, je cherche à compiler un ch'ti programme de type "hello world" qui ne fait pas grand chose en soit. Il fait appel à la classe NSObject, ancêtre de toutes les classes en Objective-C et j'ai toujours une erreur de compil'.

Voici le petit programme bidon:

```
#import <Foundation/Foundation.h>
#import <stdio.h>
 
@interface HelloWorld: NSObject
{
}
-(void) sayHello;
@end
 
@implementation HelloWorld
-(void) sayHello
{
        printf("Hello world!\n");
}
@end
 
int main(int argc, char** argv)
{
        HelloWorld*             hw=[[HelloWorld alloc] init];
 
        [hw sayHello];
        [hw release];
 
        return 0;
}
```
 
Et j'ai l'erreur de link suivante:
/usr/bin/ld: Undefined symbols:
.objc_class_name_NSObject
collect2: ld returned 1 exit status

quand je fais:
gcc -o hello hello.m -lobjc

Qu'est-ce qui ne va pas dans la ligne de commande?
Qu'ai-je oublié dans le link???

Cordialement.

Fred.


----------



## ntx (18 Juin 2007)

Tu as oublié de linké le framework Foundation :  /System/Library/Frameworks/Foundation.framework


----------



## boulifb (18 Juin 2007)

Ok, d'accord 

Et quel est le nom de la librairie?
c'est -l[quoi?] 

De manière générale, où se trouve la framework de l'Objective-C?

D'avance merci.

fred.


----------



## ntx (18 Juin 2007)

boulifb a dit:


> Et quel est le nom de la librairie?


Cf ci-dessus


> c'est -l[quoi?]


C'est pas une librairie, c'est un framwork. L'option doit être "-F". A vérifier : man gcc


> De manière générale, où se trouve la framework de l'Objective-C?


Cf ci-dessus


----------



## boulifb (18 Juin 2007)

ok, c'est -framework

Merci


----------



## ntx (18 Juin 2007)

PS : Foundation et Application sont des frameworks Cocoa. NSObject n'est pas dans la norme Obj-C, c'est déjà du Cocoa.


----------



## boulifb (18 Juin 2007)

Oui, NSObject fait parti de Cocoa et c'est même la classe de base de Cocoa émanant de NeXTStep (NS signifiant NeXTStep) si je ne m'abuse.

NSObject est à Cocoa ce que CObject est à la librairie C++ MFC...

Fred.


----------

