Ein ganz einfacher Fall, der sich mir einfach nicht erklären will:
"func.c" kompiliert und inkludiert eine "func.h" - wo die Header zu den Funktionen, welche in der "func.c" definiert werden, drinstehen.
Daraufhin kompiliert die main.cpp und inkludiert dabei die "func.h" und jetzt kommt ein Linkerfehler, weil in der main.cpp eine Funktion, bekannt aus der "func.h", aufgerufen wird, die so nun nicht gefunden wird.
Die Aufrufkonvention zwischen C/C++ ist unterschiedlich. Daher findet der C++-Compiler deine C Funktionen nicht, weil er sie nach der C++-Konvention sucht.
Wichtig ist natürlich, dass die Object-Files der func.c und der main.c zusammengelinkt werden (sollten sie, wenn sie im selben Projekt sind).
Sonst bekommst Du natürlich einen Linkerfehler, da durch das inkludieren des h-Files die Signatur der Funktion bekannt ist (wenn nicht, gäbs ja schon nen Compilerfehler), aber wenn die Datei nicht dazugelinkt wird, fehlt natürlich der Code dazu.
-Joker- hat meinen Post nicht korrekt gelesen: "main.cpp"
... was aber nicht weiter schlimm ist, weil wenn man in meinem Post main.c durch main.cpp ersetzt das geschriebene trotzdem stimmt. Auch wenn das Problem hier ein anderes war
Hab ich da überhaupt Einfluss auf das Zusammenstellen der zu verlinkenden Dateien? Ich gehe immer davon aus, dass alle, die zum Projekt gehören, korrekt verlinkt werden.
Ja hast Du. Rechte Maustaste auf die Datei, Eigenschaften und dann in den Optionen Exclude from Build -> Yes/No (Hab nur die englische. Im deutschen halt die entsprechende Übersetzung.)
zum compilieren kannst du einen c-compiler nehmen.
z.B. den von Windows.
für eclipse gibt's das cdt (für's syntax highlighten usw), aber du brauchst trotzdem einen compiler.
du musst ja auch java installieren, bevor du eclipse zum java programmieren verwenden kannst
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.