Forum: Compiler & IDEs C und C++ verlinken


von Poseidonius (Gast)


Lesenswert?

Hallo zusammen,

ich habe 2 Codeteile, einer ist in C der andere in C++ geschrieben. Kann 
man sowas einfach zusammenlinken, was bedeutet, dass ich zunächst mit 
dem avr-gcc den C Code compiliere, mit dem avr-g++ den C++ Krams und 
dann?

Vielen Dank

von StinkyWinky (Gast)


Lesenswert?

Ich würde beides mit dem C++ Compiler übersetzen.

von Poseidonius (Gast)


Lesenswert?

Mmmh, geht nicht, irgend ein Genie hat zum beispiel class als 
Variablennamen benutzt ...

von Andreas K. (a-k)


Lesenswert?

Im Include-File zum C Source:
1
#ifdef __cplusplus
2
  extern "C" {
3
#endif
4
5
...den üblichen Kram...
6
7
#ifdef __cplusplus
8
  }
9
#endif

von Andreas K. (a-k)


Lesenswert?

> Mmmh, geht nicht, irgend ein Genie hat zum beispiel class als
> Variablennamen benutzt ...

In diesem C File vorneweg:
#define class unsinn
und schon geht's.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Du kannst die Objekte problemlos zusammenlinken, allerdings musst du
das Linken via avr-g++ machen, und main() muss in einer C++-Datei
stehen.

von Poseidonius (Gast)


Lesenswert?

Ok und wie muss das praktisch aussehen?

Ich habe eine Datei main.cc die bindet einen header CCode.h ein und 
benutzt eine Klasse. Ich kompiliere also zunächst die Klasse und CCode 
und wie gehe ich mit main.cc um?

Danke

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Poseidonius wrote:

> Ich habe eine Datei main.cc die bindet einen header CCode.h ein und
> benutzt eine Klasse. Ich kompiliere also zunächst die Klasse und CCode
> und wie gehe ich mit main.cc um?

Wo ist deine C-Datei?

Hoffentlich nicht in CCode.h -- da sollten nur die extern-Deklarationen
zum C-Code (natürlich als »extern "C" ...«) stehen.

CCode.c ist separat und enthält den C-Code.  Es wird mit dem C-Compiler
in einen Objektmodul CCode.o übersetzt.

main.cc enthält den C++-Code.  Es wird mit dem C++-Compiler in einen
Objektmodul main.o übersetzt.

Danach wird der C++-Compiler benutzt, um main.o, CCode.o sowie eine dich
nicht weitere interessierende Menge an ,,Zeugs'' aus irgendwelchen
Systembibliotheken zu linken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.