recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment résoudre le problème lors de l'utilisation de gcc pour compiler plusieurs fichiers objective-c dans l'environnement Ubuntu ?

Description du problème

J'ai écrit deux cours aujourd'hui pendant le processus d'apprentissage, et

est apparu lors de la compilation.

Créer tout pour l'outil Programe...
Compilation du fichier Programe.m...
Outil de liaison Programe ...
./obj/Programe.obj/Programe.m.o:(.data.rel 0x20) : référence non définie à '__objc_class_name_Tire'
./ obj/Programe.obj/Programe.m.o:(.data.rel 0x28) : référence non définie à '__objc_class_name_Engine'
collect2 : erreur : ld a renvoyé 1 état de sortie
make[3] : * [obj/Programe] Erreur 1
make[2] : * [internal-tool-all_ ] Erreur 2
make[1] : * [Programe.all.tool.variables] Erreur 2
make : * [internal-all] Erreur 2

Je ne sais pas comment résoudre cette erreur.

Le code du fichier est le suivant

Pneu.h
#import <Cocoa/Cocoa.h>
@interface Tire : NSObject
@end // Tire
Pneu.m
#import "Tire.h"
@implementation Tire
-- (NSString *) description
{
    return (@"I am a tire. I last a while");
} // description
@end // Tire
Moteur.h
#import <Cocoa/Cocoa.h>
@interface Engine : NSObject
@end // Engine
Moteur.m
#import "Engine.h"
@implementation Engine
-- (NSString *) description
{
 return (@"I am an engine. Vrooom!");
} // description
@end // Engine
Programme.m
#import <Foundation/Foundation.h>
#import "Tire.h"
#import "Engine.h"

@interface AllWeatherRadial : Tire
@end // AllWeatherRadial
@implementation AllWeatherRadial
-- (NSString *) description
{
    return (@"I an a tire for rain or shine");
} // description
@end // AllWeatherRadial

@interface Slant6 : Engine
@end // Slant6
@implementation Slant6
-- (NSString *) description
{
    return (@"I an a slant-6. VROOOM!");
} // description
@end // Slant6

@interface Car : NSObject
{
    Engine *engine;
    Tire *tires[4];
}
-- (Engine *) engine;
-- (void) setEngine: (Engine *) newEngine;
-- (Tire *) tireAtIndex: (int) index;
-- (void) setTire: (Tire *) tire
     atIndex: (int) index;
-- (void) print;
@end // Car
@implementation Car
-- (id) init
{
    if ((self = [super init]))
    {
        engine = [Engine new];
        tires[0] = [Tire new];
        tires[1] = [Tire new];
        tires[2] = [Tire new];
        tires[3] = [Tire new];
    }
    return (self);
} // init
-- (Engine *) engine
{
    return (engine);
}
-- (void) setEngine: (Engine *) newEngine
{
    engine = newEngine;
}
-- (void) setTire: (Tire *) tire
     atIndex: (int) index
{
    if (index < 0 || index > 3) {
        NSLog (@"bad index (%d) in setTire:atIndex:",index);
        exit (1);
    }
    tires[index] = tire;
}
-- (Tire *) tireAtIndex: (int) index
{
    if (index < 0 || index <3) {
        NSLog (@"bad index (%d) in tireAtIndex:",index);
        exit (1);
    }
    return (tires[index]);
}
-- (void) print
{
    NSLog (@"%@", engine);
    NSLog (@"%@", tires[0]);
    NSLog (@"%@", tires[1]);
    NSLog (@"%@", tires[2]);
    NSLog (@"%@", tires[3]);
} // print
@end // Car

int main (int argc, const char * argv[])
{
    Car *car = [Car new];
    Engine *engine = [Slant6 new];
    [car setEngine: engine];
    int i;
    for (i = 0; i < 4; i++){
        Tire *tire = [AllWeatherRadial new];
        [car setTire: tire
             atIndex: i];
    }
    [car print];
    getchar();
    return (0);
} // main

La raison pour laquelle il y a deux caractères "--" consécutifs dans le code est que le caractère de transfert de démarque ne prend pas effet ici. Il n'y a qu'un seul symbole "-" dans le code réel.

Pouvez-vous s'il vous plaît m'aider à trouver comment résoudre ce problème ?

曾经蜡笔没有小新曾经蜡笔没有小新2843 Il y a quelques jours571

répondre à tous(0)je répondrai

Pas de réponse
  • Annulerrépondre