Forum: Mikrocontroller und Digitale Elektronik C-Fehler in VsCode mit PiPico


von Rudi (rudils)


Lesenswert?

hallo:
Ich bekomme folgende Compilermeldung in einem Projekt, das ich vorher 
auf Linux Mint mit Vscode erstellt habe. Jetzt habe ich meinen Computer 
mit Win11 und Vscode umgebaut. Wenn ich nun dieses ursprüngliche Projekt 
erstellen will, kommt diese Fehlermeldung und noch einige ähnliche mehr, 
aber nur aus 2 dieser .h Files in der Liste der Includes.
1
CMakeFiles/fbg_new01.dir/fbg_new01.cpp.obj: in function `main':
2
C:/Rudis/Pico/fbg_new01/fbg_new01.cpp:57:(.text.startup.main+0x20): undefined reference to `tasten_init()'
3
4
>>>>>>>das ist in 'main.c'
5
#include <stdio.h>
6
#include "main.h"
7
#include "fkts.h"
8
#include "hardware/flash.h"
9
#include <ctype.h>
10
#include "string.h"
11
#include "redled.h"
12
#include "tastenjob.h"
13
#include "usbsubs.h"
14
15
>>>>>>>das ist in 'tastenjob.h'
16
void        tasten_init();
17
uint8_t     getrowData( uint8_t rownr);
18
void        tasten_schnell_test();

Was soll da falsch sein?

von Michael L. (nanu)


Lesenswert?

Rudi schrieb:

Ohne zu wissen, um was es im speziellen geht..

> undefined reference to `tasten_init()'

..deutet so was immer auf einen fehlende library hin.

von Hmmm (hmmm)


Lesenswert?

Rudi schrieb:
> C:/Rudis/Pico/fbg_new01/fbg_new01.cpp:57:(.text.startup.main+0x20):
> undefined reference to `tasten_init()'

Das ist eine Fehlermeldung des Linkers, der Deine Funktion tasten_init() 
in keinem der übergebenen Object Files findet.

Rudi schrieb:
> void        tasten_init();

Damit machst Du nur den Compiler glücklich.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rudi schrieb:
> void        tasten_init();

Schöner Prototyp. Hilft aber nix, wenn die eigentliche Funktion fehlt.

von Rudi (rudils)


Lesenswert?

Matthias S. schrieb:
> Rudi schrieb:
>> void        tasten_init();
> Schöner Prototyp. Hilft aber nix, wenn die eigentliche Funktion fehlt.
Wenn du lesen kannst, unter Linux war das Projekt perfekt, da fehlt nix 
in .c Datei, da hab ich gehofft, ihr würdet annehmen, wenn das Projekt 
schon mal fertig war.

von J. S. (jojos)


Lesenswert?

Das extern „C“ fehlt wenn cpp Code in C genutzt werden soll.

von Thomas Z. (usbman)


Lesenswert?

Rudi schrieb:
> Wenn du lesen kannst, unter Linux war das Projekt perfekt, da fehlt nix
> in .c Datei,

nun dann must du halt bei Linux bleiben. Denn dort fehlt ja nix.

Ich würde an deiner Stelle mal nach tastenjob.c suchen. Mathias hat 
schon recht. Das Headerfile alleine reicht nicht.

von Peter (pittyj)


Lesenswert?

Schon der erste Fehler:
>> Jetzt habe ich meinen Computer mit Win11 und Vscode umgebaut.

Weiterhin hilft es nicht, eine tastenjob.h zu haben. Man sollte auch 
eine tastenjob.cpp haben, die mit kompiliert und gelinkt wird.
Das geschieht wohl bei Windows nicht automatisch.

Schaue in den Makefiles, Linkerscripten und Linkeroptionen nach.

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.