undefined reference to constructor

Tags:    c++

<< < 12 > >>
Hej hej

Jeg har rodet lidt med følgende fejl i lidt tid nu,

Fold kodeboks ind/udKode 


min kode er:

socket.h
Fold kodeboks ind/udKode 


socket.cpp
Fold kodeboks ind/udKode 


test.cpp
Fold kodeboks ind/udKode 


Har postet et tilsvarende spørgsmål på eksperten.dk, dog med en lidt andet klasse struktur, men stadig samme fejl som gælder. Jeg kan ikke helt forstå hvorfor jeg får den, for jeg synes selv at jeg gør det rigtige når jeg erklære min konstruktør.

På forhånd tak



Indlæg senest redigeret d. 19.04.2006 20:05 af Bruger #1151
20 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det er ikke nok at bygge én .cpp fil, du skal bruge dem alle.



Mig der er en dør til at kompile



hmm så en makefile med

socket.exe: test.cpp socket.cpp abstractSocket.cpp abstractSocket.h socket.h
g++ socket.cpp test.cpp abstractSocket.cpp

er nok?



Ja, det kunne godt bruges som en start.

Men den vil oversætte det hele hver gang du retter i en enkelt fil, på windows, med g++ tager det alt for lang tid.

Du skal nok også tilføje nogle flag for at få den til komme med nogle warnings, mindst -W




socket.exe : abstractSocket.cpp socket.cpp socket.h abstractSocket.h test.cpp
ld abstractSocket.o socket.o test.o


abstractSocket.o : abstractSocket.h abstractSocket.cpp
g++ abstractSocket.cpp


socket.o : socket.h socket.cpp
g++ socket.cpp

Jeg har lavet den her. Går det an? jeg kan se at du skriver noget med at rydde op, clean. Hvordan får jeg det med her?



Den første ville jeg lave som:
socket.exe : abstractSocket.o socket.o test.o
ld abstractSocket.o socket.o test.o

Eller bruge g++ til at linke med, det er lidt lettere.

Du kan lave en clean med:

clean:
@rm -f abstractSocket.o socket.o test.o socket.exe

Så kan du køre:
make -f mymakefile clean for at slette alle genererede filer.

Du kan også lave en variabel med alle dine .o filer:
OBJ=abstractSocket.o socket.o test.o

Så kan du lave den første regel med:
socket.exe: $(OBJ)
g++ $(OBJ) -o socket.exe



Fold kodeboks ind/udKode 


har jeg nu lavet, men jeg får fejlen,
Fold kodeboks ind/udKode 


Synes ellers ikke der er noget mærkeligt over det i forhold til det ud skriver i din lille engelske artikel, Bertel.



Aaah selvf. socket.exe skal jo afhænge af de objektfiler som man linker med ld. Det har jeg ændret, men jeg får stadig en fejl når jeg køre clean, nemlig at den ikke kan finde .o filerne. Mærkeligt, for det må jo betyde at de ikke bliver smidt i mappen, og derved får jeg heller ikke noget program.




lader jeg være med at køre clean, får jeg følgende fejl,

[code][slot@debian:~/Programmering/C++/Socket$ make -f makefile.mak
make: *** Ingen regel til at skabe mål 'job.cpp' som behøves af 'socket.exe'. Stop.
slot@debian:~/Programmering/C++/Socket$
/code]

Synes jeg er lidt mærkeligt, for jeg har jo en regel for job



<< < 12 > >>
t