LNK 1120
-
Die main habe ich mit reingenommen.
class Demo
{
public:
int wert;
int wert1;
int wert2;void tueEtwas(){
}int AddiereZahlen(int wert1,int wert2)
{
int summe = wert1 + wert2;
return summe;}
int Multiplikation(int wert1, int wert2)
{
int produkt = wert1*wert2;
return produkt;
}int Division (int wert1, int wert2)
{
int Division = wert1/wert2;
return Division;
}};
-
Sorry in meinem Quellcodeauszug ist sie nicht dabei. Unten drunter muss noch stehen:
int main(){
return 0;
}
-
klappt doch
kompiliert.
linkt.
läuft.
gibt nur nix aus.
-
Wo genau befindet sich diese main() Funktion und wie bindest du sie in dein Projekt ein?
-
Genauso ;):
class Demo
{
public:
int wert;
int wert1;
int wert2;void tueEtwas(){
}int AddiereZahlen(int wert1,int wert2)
{
int summe = wert1 + wert2;
return summe;}
int Multiplikation(int wert1, int wert2)
{
int produkt = wert1*wert2;
return produkt;
}int Division (int wert1, int wert2)
{
int Division = wert1/wert2;
return Division;
}};
int main(){
return 0;
}Ist der Quellcode der Headerdatei, in der cpp steht noch nichts.
-
C++Pete schrieb:
... der Quellcode der Headerdatei, in der cpp steht noch nichts.
Joa, so funktioniert das auch nicht. Dir fehlt anscheinend Grundlagenwissen bezüglich getrennter Übersetzung, Übersetzungseinheiten, der One-Definition-Rule, u.s.w.
Noch ein Paar Stichwörter: Versuch mal selbst rauszufinden, was die Unterschiede zwischen Präprozessor, Compiler und Linker sind. Und versuch mal rauszufinden, was deine IDE mit dem Header überhaupt macht, wenn du das Projekt übersetzen willst.
Recherchier das mal. Ich bin gerade zu faul, solche Grundlagen zu erklären. Dafür ist so'n Forum nicht da. Dafür gibt's Bücher, Suchmaschinen und Anleitungen.
-
C++Pete schrieb:
Ist der Quellcode der Headerdatei, in der cpp steht noch nichts.
Und genau das ist das Problem. Header werden nicht allein uebersetzt, sie werden erst dann uebersetzt, wenn sie in eine cpp-Datei eingebunden werden.
In deinem Fall wuerde ein einfaches #include "Header.h" in deiner cpp-Datei genuegen. Aber das ist unsauber. Du hast nicht verstanden, wozu Header gut sind.
In Header kommen (mit ein paar wenigen Ausnahmen) Deklarationen. In cpp-Dateien die Definitionen. Schau dir an, was Uebersetzungseinheit usw. bedeutet.
-
Vielen Dank für eure Hilfe. Ich habe mich zur Aufteilung in Quelltext und Headerdatei belesen und den Code umgeschrieben. Der Fehler LNK 1120 kommt jetzt nicht mehr...allerdings wird der Bezeichner "cout" und "endl" jetzt nicht erkannt (error C2065). Die Präprozessor-Direktive "#include <iostream> habe ich in der cpp- und h-Datei eingefügt. Was mache ich falsch?
#include "HalloWelt_a.h"
#include <iostream>CPP-Datei:
int Demo ::AddiereZahlen (int wert1, int wert2)
{
int summe = wert1 + wert2;
cout <<" Die Summe beträgt :"<< summe << endl;
return summe;
}void Demo ::tueEtwas(){
}int Demo ::Multiplikation(int wert1, int wert2)
{
int produkt = wert1* wert2;
return produkt;
}int Demo ::Division(int wert1, int wert2)
{
int Division = wert1/wert2;
return Division;
}int main(){
return 0;
}Headerdatei:
#include <iostream>
class Demo
{
public:
int wert;
int wert1;
int wert2;void tueEtwas();
int AddiereZahlen(int wert1,int wert2);
int Multiplikation(int wert1, int wert2);
int Division (int wert1, int wert2);
};
-
Du hast vergessen, den namespace anzugeben. std::cout, std::endl.
-
Vielen Dank für deine schnelle Antwort!