Arduino unter Windows stellt sich dumm an

#7522928
Lesenswert?

Hallo, kann mal jemand testen ob das compiliert? Ich hab heute Arduino auf Windows installiert aber es spinnt rum. Ich vermute die #define werden nicht in der richtigen Reihenfolge abgearbeitet, so dass die Funktion (oder die ganze .cpp Datei?) nicht gefunden wird. Dasselbe Spiel hatte ich anfangs mit dem struct KINGMETER_t KM; er wollte partout die header Datei nicht einlesen. Erst als ich das #include weiter nach unten gesetzt habe ging's plötzlich weiter...

1
#include <Arduino.h>
2
#include <stdint.h>
3

4
#define HARDWARE_REV 22
5
#define DISPLAY_TYPE_KINGMETER_618U (1<<4)
6
#define DISPLAY_TYPE_KINGMETER_901U (1<<8)
7
#define DISPLAY_TYPE_KINGMETER (DISPLAY_TYPE_KINGMETER_618U|DISPLAY_TYPE_KINGMETER_901U)
8
#define DISPLAY_TYPE DISPLAY_TYPE_KINGMETER_901U
9

10
#define TX0 1
11
#define RX0 3
12

13
#include "display_kingmeter.h"
14
KINGMETER_t KM;
15

16
void setup() {
17
  // put your setup code here, to run once:
18
  Serial.begin(9600, SERIAL_8N1, RX0, TX0);
19
  delay(1000);
20
  KingMeter_Init (&KM, &Serial);
21
}
22

23
void loop() {
24
  // put your main code here, to run repeatedly:
25
  delay(1000);
26

27
//  KingMeter_Service(&KM);
28
}

Wenn ich die Funktion ohne Argumente aufrufe, dann sagt er mir welche Argumente fehlen, also hat er die Deklaration. Mit Argumenten heißt es dann undefined reference. Die config.h fehlt bei mir, ich habe nur eine .h und eine .cpp Datei in den Sketch kopiert. lib: https://github.com/jenkie/Arduino-Pedelec-Controller log: https://www.mediafire.com/file/uffbfwqyfgxgxdw

#7522953
Lesenswert?

Alexander schrieb:

Ich vermute die #define werden nicht in der richtigen Reihenfolge abgearbeitet

soso

, so dass die Funktion (oder die ganze .cpp Datei?) nicht gefunden wird.

Das wird es wohl sein, hat aber nicht mit den CPP-Macros zu tun.

Dasselbe Spiel hatte ich anfangs mit dem struct KINGMETER_t KM; er wollte partout die header Datei nicht einlesen. Erst als ich das #include weiter nach unten gesetzt habe ging's plötzlich weiter...

Die Header-Datei braucht die CPP-Macros ...

Wenn ich die Funktion ohne Argumente aufrufe, dann sagt er mir welche Argumente fehlen, also hat er die Deklaration. Mit Argumenten heißt es dann undefined reference.

D.h., die Definition in der Funktion fehlt. Dann musst Du die .cpp-Datei suchen, in der diese Funktion definiert wird.

Die config.h fehlt bei mir, ich habe nur eine .h und eine .cpp Datei in den Sketch kopiert.

C++-Programmieren nach nicht nach dem Zufallsprinzip. In Summe würde ich sagen: kauf die ein C++-Buch mit den Grundlagen.

#7523043
Lesenswert?

Wenn ich die Funktion ohne Argumente aufrufe, dann sagt er mir welche Argumente fehlen, also hat er die Deklaration. Mit Argumenten heißt es dann undefined reference. Die config.h fehlt bei mir, ich habe nur eine .h und eine .cpp Datei in den Sketch kopiert. lib: https://github.com/jenkie/Arduino-Pedelec-Controller

Dann ist der Header vorhanden, aber der Quellcode wurde nicht dazugelinkt.

Das Projekt sieht auch sehr angestaubt aus. Es wird CMake verwendet, aber der Autor hat offensichtlich noch geübt.

Und über so eine Bild Schlagzeile als Threadtitel kann man nur den Kopf schütteln.

Beitrag #7523047 wurde von einem Moderator gelöscht.
#7523094
Lesenswert?

Ich möchte nicht das gesamte Projekt, ich möchte nur diese beiden Dateien display_kingmeter.h und display_kingmeter.cpp in ein Sketch einbinden. Dazu habe ich diese von github heruntergeladen und in den Sketch Ordner kopiert. Aus dem Log geht hervor das diese auch compiliert werden.

Vielleicht liegt es am Windows. Oder an der Arduino IDE, da hatte ich schon mal ein anderes Problem.

Beitrag "Re: Typedef enum als Funktionsparameter (Arduino)"

Oder es liegt an zusätzlichen Fehlern im Code, die ich nicht verstehe.

#7523108
Lesenswert?

Alexander schrieb:

Wilhelm M. schrieb:

Soso ... und die config.h "wolltest" Du nicht ;-)

Alexander schrieb:

Ich habe die relevanten Zeilen daraus in die .ino kopiert.

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

Genau das meinte ich mit: nimm ein Buch in die Hand.

Oh man, wenn Du Hilfe willst, dann pack Deine Dateien und die Fehlermeldungen zusammen und poste das hier.

#7523112
Lesenswert?

Hallo, Alexander schrieb im Beitrag #7523107:

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

Geh mal davon aus, das eine Abhängigkeit besteht zwischen dem was da heraus kopiert hast und dem was du da nicht heraus kopiert hast.

rhf

#7523117
Lesenswert?

J. S. schrieb:

Dann ist der Header vorhanden, aber der Quellcode wurde nicht dazugelinkt.

Laut Log wurde die passende cpp-Datei problemlos compiliert. Dann müsste sie eigentlich auch mitgelinkt werden.

Wenn der Linker eine compilierte Funktion nicht findet, kann es daran liegen, dass bei ihrem Aufruf ein 'full qualified name' nötig gewesen wäre.

Vielleicht bezieht sich die Fehlermeldung aber auf einen der Aufruf-Parameter der Funktion und nicht auf die Funktion selbst?

#7523121
Lesenswert?

Wilhelm M. schrieb:

Alexander schrieb:

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

Genau das meinte ich mit: nimm ein Buch in die Hand.

Ein einfaches Ja oder Nein ist nicht drin?

Wilhelm M. schrieb:

Oh man, wenn Du Hilfe willst, dann pack Deine Dateien und die Fehlermeldungen zusammen und poste das hier.

habe ich gemacht, siehe OP. Alexander schrieb im Beitrag #7522928:

log: https://www.mediafire.com/file/uffbfwqyfgxgxdw

Roland F. schrieb:

Geh mal davon aus, das eine Abhängigkeit besteht zwischen dem was da heraus kopiert hast und dem was du da nicht heraus kopiert hast.

Ich bin es Zeile für Zeile durchgegangen und alles was in der .h und der .cpp abgefragt wird, habe ich in der .ino definiert. Ich kann mir die Werte auch über Serial.print() anzeigen lassen, da stimmt alles. Allerdings weiß ich nicht ob die Reihenfolge der #define stimmt, oder wie ich die überprüfen könnte.

J. S. schrieb:

Dann benutze doch ein anderes OS.

Das habe ich nun nachgeholt, war etwas spät gestern. Unter Linux kommt dieselbe Fehlermeldung, also liegt es schon mal nicht am Windows.

1
Arduino: 1.8.19 (Linux), Board: "DOIT ESP32 DEVKIT V1, 80MHz, 921600, None, Disabled"
2
/home/mint/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: sketch/sketch_oct25a.ino.cpp.o:(.literal._Z5setupv+0x14): undefined reference to `KingMeter_Init(KINGMETER_t*, HardwareSerial*)'
3
/home/mint/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: sketch/sketch_oct25a.ino.cpp.o: in function `setup()':
4
/home/mint/Arduino/sketch_oct25a/sketch_oct25a.ino:20: undefined reference to `KingMeter_Init(KINGMETER_t*, HardwareSerial*)'
5
collect2: error: ld returned 1 exit status
6
exit status 1
7
Error compiling for board DOIT ESP32 DEVKIT V1.
#7523125
Lesenswert?

Alexander schrieb:

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

durch das #include wird die angegebene Datei in den Quelltext eingefügt. Die Datei kann auch Kai-Uwe.irgendwas heißen, das ist völlig egal für den Compiler. Insofern ist es ok wenn man den Inhalt per cut & paste in den Quelltext bringt. Man muss aber alle Abhängigkeiten erfassen und verschachtelte Funktionen müssen als Quelltext in das Projekt übernommen werden. Und die wollen wieder irgendwelche defines haben. Der Compiler liest alles Zeilenweise ein, da gibt es keine Magie und kein unterschiedliches Verhalten zwischen OS. Wenn irgendwo ein #ifdef steht dann kommt es darauf an ob das abgefragte define vorher gesetzt wurde oder nicht. Alternativ kann das auch dem Compiler mitgegeben werden, aber das wird im einfachen Arduino Buildsystem nicht gut unterstützt, deshalb hat der Autor von dem github Projekt das wohl auch mit CMake angefangen. Oder platformIO verwenden, da kann man einfach mehrere Konfigurationen mit verschiedenen defines anlegen.

#7523128
Lesenswert?

Alexander schrieb:

Wilhelm M. schrieb:

Alexander schrieb:

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

Genau das meinte ich mit: nimm ein Buch in die Hand.

Ein einfaches Ja oder Nein ist nicht drin?

Diese Frage zeigt schon, dass Du gar keine Ahnung hast. Daher ist es nicht zielführend, diese Frage zu beantworten, sondern an der Wurzel anzusetzen.

Wilhelm M. schrieb:

Oh man, wenn Du Hilfe willst, dann pack Deine Dateien und die Fehlermeldungen zusammen und poste das hier.

habe ich gemacht, siehe OP. Alexander schrieb im Beitrag #7522928:

log: https://www.mediafire.com/file/uffbfwqyfgxgxdw

... und dazu habe was geschrieben.

Roland F. schrieb:

Geh mal davon aus, das eine Abhängigkeit besteht zwischen dem was da heraus kopiert hast und dem was du da nicht heraus kopiert hast.

Ich bin es Zeile für Zeile durchgegangen und alles was in der .h und der .cpp abgefragt wird, habe ich in der .ino definiert. Ich kann mir die Werte auch über Serial.print() anzeigen lassen, da stimmt alles. Allerdings weiß ich nicht ob die Reihenfolge der #define stimmt, oder wie ich die überprüfen könnte.

1
> Arduino: 1.8.19 (Linux), Board: "DOIT ESP32 DEVKIT V1, 80MHz, 921600, 
2
> None, Disabled"
3
> /home/mint/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: 
4
> sketch/sketch_oct25a.ino.cpp.o:(.literal._Z5setupv+0x14): undefined 
5
> reference to `KingMeter_Init(KINGMETER_t*, HardwareSerial*)'
6
> /home/mint/.arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: 
7
> sketch/sketch_oct25a.ino.cpp.o: in function `setup()':
8
> /home/mint/Arduino/sketch_oct25a/sketch_oct25a.ino:20: undefined 
9
> reference to `KingMeter_Init(KINGMETER_t*, HardwareSerial*)'
10
> collect2: error: ld returned 1 exit status
11
> exit status 1
12
> Error compiling for board DOIT ESP32 DEVKIT V1.
13
>

Dem Linker fehlt einfach display_kingnmeter.o

#7523137
Lesenswert?

Alexander schrieb:

Die config.h fehlt bei mir, ich habe nur eine .h und eine .cpp Datei in den Sketch kopiert.

display_kingmeter.h inkludiert aber config.h. Irgendetwas musst du getan haben, um dieses Problem zu umgehen. Und dabei hast du wahrscheinlich eine Inkonsistenz erzeugt, zum Beispiel display_kingmeter.o für SoftwareSerial übersetzt, das .ino aber mit HardwareSerial.

LG, Sebastian

#7523140
Lesenswert?

Rolf schrieb:

Laut Log wurde die passende cpp-Datei problemlos compiliert. Dann müsste sie eigentlich auch mitgelinkt werden.

Wenn der Linker eine compilierte Funktion nicht findet, kann es daran liegen, dass bei ihrem Aufruf ein 'full qualified name' nötig gewesen wäre.

Vielleicht bezieht sich die Fehlermeldung aber auf einen der Aufruf-Parameter der Funktion und nicht auf die Funktion selbst?

Ich habe nun mal alle unnötigen #if und #ifndef auskommentiert, nun bekomme ich andere Fehlermeldung. Sollte doch aber mit #include <Arduino.h> oder #include <stdint.h> erschlagen sein?

1
display_kingmeter.cpp:36:7: error: 'uint8_t' does not name a type
#7523254
Lesenswert?

Es kann sein das bei diesem ESP32 Board Serial die USBSerial ist, dann passt das nicht. Der Rest sollte schon ok sein. Probiere mal Serial1 aus.

edit: habe es mal q&d in platformIO geworfen, kompiliert. Einfach die originale config.h verwendet und den DisplayType gesetzt. Dann meckert der Compiler noch ein unbekanntes A2 an, habe ich durch A10 und A11 ersetzt. Die Konstanten für TX und RX scheinen mir noch falsch zu sein, da müssen die Pinnummern rein. Habe das auf github hochgeladen: https://github.com/JojoS62/ESP32-serial

Serial ist da HardwareSerial, das kompiliert ohne Fehler.

#7523325
Lesenswert?

Danke. da es an der config.h liegen musste, bin ich die noch mal durchgegangen. Es fehlten fünf Parameter.

Kompilieren ließ es sich dann aber immer noch nicht. 'uint16_t' does not name a type sowie 'HardwareSerial' does not name a type. Gehirn angestrengt und die #include <stdint.h> #include <Arduino.h> aus der .ino rausgelöscht und in die display_kingmeter.h eingetragen.

Dann kam error: 'name' was not declared in this scope für die fünf Parameter. Diese aus der .ino rausgelöscht und in die display_kingmeter.cpp eingetragen, nun kompiliert es.

Ziel war es aber eigentlich die Dateien original zu belassen. Keine Chance?

Sebastian W. schrieb:

Das kann nicht sein. Wie gesagt,

Arduino ignoriert die fehlende config.h einfach, hatte es mit und ohne Auskommentierung versucht und keinen Unterschied feststellen können. Daher habe ich die Dateien dann original belassen.

#7523335
Lesenswert?

Alexander schrieb:

Arduino ignoriert die fehlende config.h einfach,

'Arduino' kann die nicht ignorieren. In config.h wird Arduino.h inkludiert und display_kingmeter.h braucht beide. Es reicht nicht die includes nur in die .ino zu schreiben, das display_kingmeter.cpp kennt die ino nicht und muss für sich kompilierfähig sein.

Ich habe die Quellen ja original übernommen, nur den A2 kennt das ESP32 Devkit nicht. https://github.com/JojoS62/ESP32-serial/tree/main/src

#7523384
Lesenswert?

wenn man #include "datei.xy" im Code hat und die Datei existiert nicht, dann meckert der Compiler definitiv. Und es gelten die Regeln des Dateisystems, d.h. unter Linux ist der Name auch case sensistive. Du hattest das config.h aber nicht benutzt und ein paar defines selber gesetzt, aber im config.h sind noch mehr nötige Codezeilen für das Kingmeter drin.

Das Arduino.h fügt das Arduino Buildsystem in das .ino ein und es kopiert .ino und .pde Dateien zusammen, ein bisschen fummelt es an diesen Quellen schon rum. Aber das Arduino Buildsystem ist wieder gleich, egal ob Arduino IDE, PIO oder die Arduino CLI Tools.

#7523404
Lesenswert?

J. S. schrieb:

wenn man #include "datei.xy" im Code hat und die Datei existiert nicht, dann meckert der Compiler definitiv.

Welches Log Level braucht man um dieses Meckern auch zu sehen? In meinem Log war da nichts was config.h angemeckert hätte (siehe zip)

J. S. schrieb:

Du hattest das config.h aber nicht benutzt und ein paar defines selber gesetzt,

in der .ino, was der .cpp ja nicht bekannt ist

J. S. schrieb:

aber im config.h sind noch mehr nötige Codezeilen für das Kingmeter drin.

fünf Parameter aus den Config Options (Zeile 200) die ebenfalls nicht angemeckert wurden, da die Makros gar nicht erst funktionierten und die Funktion nicht bekannt war

#7523412
Lesenswert?

Alexander schrieb:

Welches Log Level braucht man um dieses Meckern auch zu sehen? In meinem Log war da nichts was config.h angemeckert hätte (siehe zip)

Bei mir meldet Arduino 1.8.19 beim Kompilieren des angefügten Beispiels folgendes:

1
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Hobbyraum\AppData\Local\Arduino15\packages -hardware C:\Users\Hobbyraum\Documents\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Hobbyraum\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Hobbyraum\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10819 -build-path C:\Users\HOBBYR~1\AppData\Local\Temp\arduino_build_340529 -warnings=all -build-cache C:\Users\HOBBYR~1\AppData\Local\Temp\arduino_cache_143689 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\Users\Hobbyraum\Documents\Arduino\sketch_oct26a\sketch_oct26a.ino
2
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Hobbyraum\AppData\Local\Arduino15\packages -hardware C:\Users\Hobbyraum\Documents\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Hobbyraum\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Hobbyraum\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328old -vid-pid=1A86_7523 -ide-version=10819 -build-path C:\Users\HOBBYR~1\AppData\Local\Temp\arduino_build_340529 -warnings=all -build-cache C:\Users\HOBBYR~1\AppData\Local\Temp\arduino_cache_143689 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17 -prefs=runtime.tools.arduinoOTA.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Users\Hobbyraum\AppData\Local\Arduino15\packages\arduino\tools\arduinoOTA\1.3.0 -verbose C:\Users\Hobbyraum\Documents\Arduino\sketch_oct26a\sketch_oct26a.ino
3
Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
4
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
5
Detecting libraries used...
6
"C:\\Users\\Hobbyraum\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\eightanaloginputs" "C:\\Users\\HOBBYR~1\\AppData\\Local\\Temp\\arduino_build_340529\\sketch\\sketch_oct26a.ino.cpp" -o nul
7
Alternatives for config.h: []
8
ResolveLibrary(config.h)
9
  -> candidates: []
10
In file included from C:\Users\Hobbyraum\Documents\Arduino\sketch_oct26a\sketch_oct26a.ino:1:0:
11
test.h:1:10: fatal error: config.h: No such file or directory
12
 #include "config.h"
13
          ^~~~~~~~~~
14
compilation terminated.
15
exit status 1
16
config.h: No such file or directory

Es scheint also, dass die Arduino-Umgebung bei #include "config.h" trotz der Anführungszeichen (also nicht der spitzen Klammern) nach einer entsprechenden Bibliothek sucht? Das wäre allerdings eine Böse Falle!

LG, Sebastian

Angehängte Dateien:
#7523417
Lesenswert?

es wird irgendeine andere config.h finden, z.B. in mbedtls. Ein fehlendes include ist ein Fehler, da braucht es keinen Loglevel. Könnte man testen durch umbenennen in "configxyz.h".

Also so wie es bei Sebastian passiert. AVR hat kein mbedtls, also wird die config.h da nicht gefunden.

Deshalb mag ich CMake, und nicht das file globbing benutzen. Ausschreiben was includiert werden soll, nicht von einem magischen Builder suchen lassen. Kenne ich auch von Mbed...

#7523432
Lesenswert?

Ein ResolveLibrary(config.h) -> candidates: [] sehe ich aber nicht in meinem Log, und auch keine config.h (nur mbedtls/esp_config.h)

Aber danke für's testen. Ich denke ich werde einfach meine "eigene" minimalistische Lib erstellen. Kann man ja machen, ich muss ja nur den GPL Copyright © 2015 Michael Fabry Disclaimer einfügen. Da behalte ich nur die display_kingmeter.h

Moderator Persönliche Seite #7523785
Lesenswert?

Alexander schrieb:

die config.h gibt es tatsächlich

Es ist auch sehr däml^H^H^H^Hunklug vom Kingmeter-Autor, die Konfigurationsdatei für die Kingmeter-Sources config.h zu nennen. Wenn schon display_kingmeter.h und display_kingmeter.cpp, dann sollte das config_kingmeter.h oder kingmeter_config.h heißen.

So mache ich das in meinen Paketen auch, z.B. irmpconfig.h usw.

#7523789
Lesenswert?

da ist die komplette config für den Pedelec Controller drin, es können verschiedene Displays ausgewählt werden und die ganzen Parameter sind da drin. Das wollte der TO ja nicht übernehmen, für den Fall wäre eine gestrippte Version als king_config natürlich besser.

#7523845
Lesenswert?

Alexander schrieb:

Wilhelm M. schrieb:

Soso ... und die config.h "wolltest" Du nicht ;-)

Alexander schrieb:

Ich habe die relevanten Zeilen daraus in die .ino kopiert.

Geht das so nicht? D.h. es muss zwingend in eine Header Datei kopiert werden?

Um das noch zu beantworten: Nein, das geht so nicht. Zwar sind die "relevanten Zeilen" dann während der Übersetzung der .ino bekannt, aber nicht während der Übersetzung der .cpp.

Die einfachste Lösung wäre, display_kingmeter.h anzupassen. Dort muss ja eh die Zeile #include "config.h" entfernt werden. Und an genau dieser Stelle sollten stattdessen die "relevanten Zeilen" aus der ehemaligen config.h eingefügt werden.

Dann stehen sie sowohl der .cpp als auch der .ino beim Übersetzen zur Verfügung.

LG, Sebastian

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