[g++] wie kompilier ich das?
-
hi,
habe nun mal ein etwas grösseres test projekt geschrieben..
habe nun 2 klasse:klasse1.h // enthält alle prototypen der klasse
klasse1.cpp // enthält code der funktionen
klasse2.h // enthält alle prototypen der klasse
klasse2.cpp // enthält code der funktionenmain.cpp // hauptprogramm greift auf beide klassen zu
wenn ich main nun kompilieren will, findet er die codes in klasse1/2.cpp net, das kompilieren schlägt also fehl..
wie kompilier ich das nun?
ich glaube man muss irgendwie object-files machen.. also klass1.o klasse2.o, richtig?
aber dann, wie mit der main datei verlinken..?
-
(Pseudo-)Zusammen:
g++ -o blahblubb klasse1.cpp klasse2.cpp main.cppGetrennt:
g++ -c klasse1.cpp
g++ -c klasse2.cpp
g++ -c main.cpp
g++ -o blahblubb klasse1.o klasse2.o main.oBesser: Ein Makefile bauen, damit nicht andauernd alles neu compiliert wird.
-
bekomme immernoch folgende fehlermeldungen... vielleicht wird einer schlau daraus?
also die einzelnenen dateien zu einem .o file machen, klappt ohne weiteres, dann aber das zusammen verlinken schlägt offenbar fehl..vielleicht muss ich noch erwähnen dass die eine klasse (hier Person) auf die Klasse GetraenkeAutomat zugreift... also ihr sollte die klasse bekannt sein, ich habe da einfach #include "automat.h" bei person.h und person.cpp gemacht..
sollte damit ja eigentlich gehen?gz@gbox automat$ g++ -o main person.cpp automat.cpp main.cpp
/tmp/ccuJO0RC.o(.text+0xd6): In functionmain': : undefined reference to
GetraenkeAutomat::istGesperrt() const'
/tmp/ccuJO0RC.o(.text+0x105): In functionmain': : undefined reference to
GetraenkeAutomat::GetraenkePreis() const'
/tmp/ccuJO0RC.o(.text+0x114): In functionmain': : undefined reference to
Person::genugGeld(int) const'
/tmp/ccuJO0RC.o(.text+0x127): In functionmain': : undefined reference to
Person::wievielGeld() const'
/tmp/ccuJO0RC.o(.text+0x14b): In functionmain': : undefined reference to
Person::GeldEinwerfen(GetraenkeAutomat&, int)'
/tmp/ccuJO0RC.o(.text+0x15d): In functionmain': : undefined reference to
Person::KnopfDruecken(GetraenkeAutomat&)'
/tmp/ccuJO0RC.o(.text+0x168): In functionmain': : undefined reference to
GetraenkeAutomat::RueckgeldVorhanden() const'
/tmp/ccuJO0RC.o(.text+0x177): In functionmain': : undefined reference to
GetraenkeAutomat::GeldRueckGabe() const'
/tmp/ccuJO0RC.o(.text+0x186): In functionmain': : undefined reference to
Person::GeldEntnehmen(int)'
/tmp/ccuJO0RC.o(.text+0x191): In functionmain': : undefined reference to
GetraenkeAutomat::DoseHerausgegeben() const'
/tmp/ccuJO0RC.o(.text+0x1a0): In functionmain': : undefined reference to
Person::trinkt() const'
/tmp/ccuJO0RC.o(.text+0x1ab): In functionmain': : undefined reference to
GetraenkeAutomat::istGesperrt() const'
collect2: ld returned 1 exit status
-
Sicher, dass du deine Header einbindest?