[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 funktionen

    main.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.cpp

    Getrennt:
    g++ -c klasse1.cpp
    g++ -c klasse2.cpp
    g++ -c main.cpp
    g++ -o blahblubb klasse1.o klasse2.o main.o

    Besser: 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 function main': : undefined reference toGetraenkeAutomat::istGesperrt() const'
    /tmp/ccuJO0RC.o(.text+0x105): In function main': : undefined reference toGetraenkeAutomat::GetraenkePreis() const'
    /tmp/ccuJO0RC.o(.text+0x114): In function main': : undefined reference toPerson::genugGeld(int) const'
    /tmp/ccuJO0RC.o(.text+0x127): In function main': : undefined reference toPerson::wievielGeld() const'
    /tmp/ccuJO0RC.o(.text+0x14b): In function main': : undefined reference toPerson::GeldEinwerfen(GetraenkeAutomat&, int)'
    /tmp/ccuJO0RC.o(.text+0x15d): In function main': : undefined reference toPerson::KnopfDruecken(GetraenkeAutomat&)'
    /tmp/ccuJO0RC.o(.text+0x168): In function main': : undefined reference toGetraenkeAutomat::RueckgeldVorhanden() const'
    /tmp/ccuJO0RC.o(.text+0x177): In function main': : undefined reference toGetraenkeAutomat::GeldRueckGabe() const'
    /tmp/ccuJO0RC.o(.text+0x186): In function main': : undefined reference toPerson::GeldEntnehmen(int)'
    /tmp/ccuJO0RC.o(.text+0x191): In function main': : undefined reference toGetraenkeAutomat::DoseHerausgegeben() const'
    /tmp/ccuJO0RC.o(.text+0x1a0): In function main': : undefined reference toPerson::trinkt() const'
    /tmp/ccuJO0RC.o(.text+0x1ab): In function main': : undefined reference toGetraenkeAutomat::istGesperrt() const'
    collect2: ld returned 1 exit status



  • Sicher, dass du deine Header einbindest?


Anmelden zum Antworten