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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren