Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Linkkaus ja luokat

ZcMander [23.12.2004 09:38:03]

#

Eli jos map.cc tiedostossa on karttaa koskeava luokka niin miten voin käyttää sitä main.cc vaikka ne laitetaan yhteen makella.

Minun makefile:

rope:map.o object.o main.o
	g++ -o rope map.o object.o main.o

PS:Yllätys, yläätys, make toimii nuinkin :O ei tarvi erikseen määritellä miten nuo o tiedostot käännetään.

Metabolix [23.12.2004 12:32:06]

#

Tuota varten jokaiselle kooditiedostolle on yleensä otsikkotiedosto:

/**********
** map.h **
**********/

class TKartta
{
public:
  TKartta();
  ~TKartta();
};
/***********
** map.cc **
***********/

#include "map.h"

// Funktiot:

TKartta::TKartta()
{
}

TKartta::~TKartta()
{
}
/************
** main.cc **
************/

#include "map.h"

FooBat [23.12.2004 14:04:16]

#

Itse olen yleensä käyttänyt tälläistä Makefilea.

CC = g++
LD = g++

#C++-compiler options
CFLAGS = -Wall -g -O2

# libraries
LDLIBS = -lm

# Object files for target
OBJS = main.o map.o object.o

# target program
TARGET = rope

all: $(TARGET)

clean:
	rm -f $(OBJS) *~ core.* $(TARGET)

%.o: %.cc
	$(CC) $(CFLAGS) -c -o $@ $<

$(TARGET): $(OBJS)
	$(LD) -o $@ $(OBJS) $(LDLIBS)

.PHONY: all clean

ZcMander [08.01.2005 09:58:02]

#

Oli pakko tuoda esiin, koska tämä ei toimi vieläkään. Muutin .h tiedostoksi ja sinne sisälle luokan esittelyn + joitain headereita ja vakioita, koska muuten niitä ei voi käyttää.

EDIT: ainiin. Unohtui mainita mitä se valittaa:

g++    -c -o main.o main.cc
g++ main.o -o rope
main.o(.text+0x126): In function `main':
: undefined reference to `map::map()'
main.o(.text+0x167): In function `main':
: undefined reference to `Door::Door()'
collect2: ld returned 1 exit status
make: *** [rope] Error 1

ja vielä makefile:

rope:main.o
	g++ main.o -o rope

Mulla unohtui laittaa .cc tiedostoon .h tiedoston liittäminen(include)

EDIT2: Nytten ei tarvi olla .h tiedostoissa kuin luokka.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta