mikrocontroller.net

Forum: Compiler & IDEs C und C++ verlinken


Autor: Poseidonius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde beides mit dem C++ Compiler übersetzen.

Autor: Poseidonius (Gast)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Include-File zum C Source:
#ifdef __cplusplus
  extern "C" {
#endif

...den üblichen Kram...

#ifdef __cplusplus
  }
#endif

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Poseidonius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.