G++ findet Implementierungsdatei nicht

Hallo zusammen!

Ich habe ein kleines Problem mit g++ auf der Linux-Konsole.
g++ findet nicht die zu einer Header-Datei gehörende Implementierungs-Datei, obwohl beide Dateien im selben Verzeichnis liegen und den gleichen Namen haben.
Wenn ich g++ aber explizit die cpp Datei als Parameter übergebe, findet er sie.
Kann mit bitte jemand helfen?
Ich möchte nicht alle Implementierungsdateien als Parameter geben.

Danke & Gruß
Mac

Hallo,

Ich habe ein kleines Problem mit g++ auf der Linux-Konsole.
g++ findet nicht die zu einer Header-Datei gehörende
Implementierungs-Datei, obwohl beide Dateien im selben
Verzeichnis liegen und den gleichen Namen haben.
Wenn ich g++ aber explizit die cpp Datei als Parameter
übergebe, findet er sie.
Kann mit bitte jemand helfen?

Du solltest die Dateien einzeln mit

g++ -Wall -ansi -c foo.cpp -o foo.o

kompilieren, bzw. das von Make machen lassen. Und dann am Ende kannst du sie mit

g++ -Wall -ansi -c -o programmname main.c foo.o bar.o ...

zu einer executable zusammenfügen.

Wenn das zu viel Arbeit ist, lies dich in make ein, das nimmt dir einen großen Teil der Arbeit ab.

Grüße,
Moritz

Hallo Moritz,

Ist das eine generelle Eigenschaft von C++.
Ich habe bisher recht viel in C programmiert und da brauchte man das nicht machen.

Gruß
Mac

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Ist das eine generelle Eigenschaft von C++.

Das ist erst mal keine Eigenschaft der Sprache, sondern des Compilers und Linkers. Letztendlich muss das System aus Compiler und Linker irgendwoher wissen, wo die Dateien sind. In grafischen IDEs wird oft eine Projektdatei erstellt, aus der dann automatisch eine Makefile generiert wird.
Aber es ist aus gutem Grund unüblich, einfach alle .cpp-Dateien des Verzeichnisses auszuwählen.

Ich habe bisher recht viel in C programmiert und da brauchte
man das nicht machen.

Mit welchem Compiler/welcher IDE denn?
Wenn man nur die Standardfunktionen verwendet (printf und so…), dann braucht man es tatsächlich nicht, weil per default dagegen gelinkt wird. Sonst aber eigentlich auch, außer du hast ein Tool dass das automatisch für dich macht.

Grüße,
Moritz