cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyelesaikan masalah apabila menggunakan gcc untuk menyusun berbilang fail objektif-c dalam persekitaran Ubuntu?

Penerangan Masalah

Saya menulis dua kelas hari ini semasa proses pembelajaran, dan

muncul semasa penyusunan.

Membuat program semua untuk alatan...
Menyusun fail Programe.m...
Program alat memaut ...
./obj/Programe.obj/Programe.m.o:(.data.rel 0x20): rujukan tidak ditentukan kepada '__objc_class_name_Tayar'
./ obj/Programe.obj/Programe.m.o:(.data.rel 0x28): rujukan tidak ditentukan kepada '__objc_class_name_Engine'
collect2: ralat: ld mengembalikan 1 status keluar
make[3]: * [obj/Programe] Ralat 1
make[2]: * [internal-tool-all_ ] Ralat 2
buat[1]: * [Programe.all.tool.variables] Ralat 2
buat: * [dalaman-semua] Ralat 2

Saya tidak tahu bagaimana untuk menyelesaikan ralat ini.

Kod fail adalah seperti berikut

Tayar.h
#import <Cocoa/Cocoa.h>
@interface Tire : NSObject
@end // Tire
Tayar.m
#import "Tire.h"
@implementation Tire
-- (NSString *) description
{
    return (@"I am a tire. I last a while");
} // description
@end // Tire
Enjin.h
#import <Cocoa/Cocoa.h>
@interface Engine : NSObject
@end // Engine
Enjin.m
#import "Engine.h"
@implementation Engine
-- (NSString *) description
{
 return (@"I am an engine. Vrooom!");
} // description
@end // Engine
Program.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

Sebab mengapa terdapat dua aksara "--" berturut-turut dalam kod ialah watak pemindahan turun nilai tidak berkuat kuasa di sini Hanya terdapat satu simbol "-" dalam kod sebenar.

Bolehkah anda membantu saya memikirkan cara untuk menyelesaikan masalah ini?

曾经蜡笔没有小新曾经蜡笔没有小新2845 hari yang lalu576

membalas semua(0)saya akan balas

Tiada jawapan
  • Batalbalas