Platformio will nicht kompilieren, "undefined reference"

Gast #7507067
Lesenswert?
• ▲
▼

Hallo, ich komme bei meinem Projekt einfach nicht weiter.

Ich habe hier einen ziemlich unbekannten µC für den ich ein Arduino "Longduino" gefunden habe wo SPI und damit auch die SD Library funktioniert mit der ich gut zurecht komme.

Nun brauche ich aber noch eine serielle Verbindung über USB und habe versucht die library die in dem github Projekt mit drin ist zu nutzen.

Im Anhang ist ein minimaler code der nicht funktioniert. Ich habe in meiner main.cpp eine referenz auf usb.h, in usb.cpp liegen die passenden funktionen aus dem Beispiel.

Also main.cpp -> usb.h -> cdc_acm_core.h

Und alle Funktionen die in cdc_acm_core.h liegen und den prefix "extern" haben, für die gibt es ein undefined reference.

Was muss ich genau ändern damit es kompiliert? Ich kenne mich mit linken usw. nicht so aus.

Hier das inkludierte platform_packages in der platformio.ini: https://github.com/trinami/Longduino

Danke schonmal! :)

Angehängte Dateien:
Gast #7507084
Lesenswert?
• ▲
▼

J. S. schrieb:

USB scheint wie vieles andere nicht implementiert zu sein und das Projekt schläft seit zwei Jahren.

Irgendeine Idee was ich sonst nehmen könnte? Es gibt wohl auch Rust für diesen µC aber das müsste ich auch erstmal lernen xD

Arduino wäre schon super, vor allem weil ich jede Menge von den Dingern habe.

Und ich habe hier ein Projekt liegen da funktioniert usb_cdc tatsächlich mit dem unterschied das ich in platformio nicht longduino als framework habe sondern gd32v irgendwas...

Ausserdem habe ich eine main.c und keine main.cpp sowie alles in der main.c Datei und nicht ausgelagert in eine usb.c/pp

Ich denke also der code ist kompilierfähig, ich weiß nur nicht wie. Die Funktionen für die er einen undefined reference schmeisst sind ja auch implementiert sowohl in einer .c als auch in einer .h Datei... Ich muss da irgendwas übersehen, nur was?

Gast #7507120
Lesenswert?
• ▲
▼

Ja genau, so habe jz das von dir angegebene Beispiel in eine usb.cpp / usb.h Datei gepackt.

Nun kommt bei der ersten Funktion "init_clocks()" die ich aufrufe direkt wieder undefined reference ! dabei ist die funktion in

usb.h definiert: static void init_clocks(void);

und in usb.cpp static void init_clocks(void) { ... }

Im Anhang nochmal der code. Was läuft da falsch?

Angehängte Dateien:
Gast #7507123
Lesenswert?
• ▲
▼

Aha! lass ich das so und kopiere alles in meine main.cpp funktioniert es. Ich und oder der linker/compiler machen also irgendwas falsch, wenn es darum geht es in eine h/cpp Datei auszulagern.

Jetzt ist nur noch die Frage was?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.