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
Mmmh, geht nicht, irgend ein Genie hat zum beispiel class als Variablennamen benutzt ...
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
|
> 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.
Du kannst die Objekte problemlos zusammenlinken, allerdings musst du das Linken via avr-g++ machen, und main() muss in einer C++-Datei stehen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.