Coocox Compiler Probleme

OP #5259412
Lesenswert?

Hallo zusammen

Ich habe heute probiert eine Arduino Library in Coocox für STM32 zu 
bearbeiten. Hierzu habe ich unter "app" im Ordnerbaum auf "Add Files" 
geklickt und die .h und .cpp ausgewählt. Hierzu habe ich die TimeLib 
benutzt.

Grundsätzlich funktioniert der Compiler, da er sofort die Fehler 
erkannte welche ich dann behob.  Eigentlich musste ich nur "millis();" 
fixen, da es dies nur bei Arduino gibt.

Ich habe nun aber folgendes Problem.

Wenn man das main.c builden will, erscheint folgender Fehler
1
RTC3\app/main.c:144: undefined reference to `setTime'
2
RTC3\app/main.c:161: undefined reference to `second'

bezieht sich auf diese Zeilen
1
  setTime(1514570944);
2
  int ssecond = second();

Die beiden Funktionen sind in der TimeLib.h und TimeLib.cpp enthalten...

TimeLib.h habe ich in der main.h Datei des STM32 Projekts angegeben.


Wo mache ich hier den Fehler?
OP #5259441
Lesenswert?

Jens D. schrieb:
> Ist SetTime als static angegeben?

im TimeLib.h als "void setTime();"

> Die TimeLib.h kannst du auch in deiner main.c(pp) per include holen.
>
> TimeLib.cpp wird auch sicher kompiliert? Vielleicht musst du wenn
> vorhanden dein makefile anpassen.
>
> Alternativ provoziere mal in der TimeLib einen compile Fehler oder
> warning.

Ja, als ich das erste mal importiert habe endeckte der Compiler ja die 
"millis()" Funktion als fehler, nach dem ich millis() in STM32 
nachgebaut hab ging es.
Gast #5259453
Lesenswert?

Johnny S. schrieb:
> Wo mache ich hier den Fehler?

Du wirst schon angeben müssen um welche Lib es sich handelt.

Grunsätzlich bauen viele Arduino Libs auf das existerende
Arduino Basis-Gerüst auf, lassen sich also nicht ohne weiteres
standalone benutzen.

Aber wenn du schon anfängst

Johnny S. schrieb:
> Grundsätzlich funktioniert der Compiler

den Compiler in Zweifel zu ziehen, wo doch Coocox keinen
Compiler hat, dann ist der Weg weit ....
OP #5259464
Lesenswert?

Nebel Stocher schrieb:
> Johnny S. schrieb:
>> Wo mache ich hier den Fehler?
>
> Du wirst schon angeben müssen um welche Lib es sich handelt.
>
> Grunsätzlich bauen viele Arduino Libs auf das existerende
> Arduino Basis-Gerüst auf, lassen sich also nicht ohne weiteres
> standalone benutzen.
>
> Aber wenn du schon anfängst
>
> Johnny S. schrieb:
>> Grundsätzlich funktioniert der Compiler
>
> den Compiler in Zweifel zu ziehen, wo doch Coocox keinen
> Compiler hat, dann ist der Weg weit ....

Es handelt sich um die Lib "TimeLib"

In dieser Library gibt es etwa 10 Zeilen welche arduino-spezifisch sind, 
der Rest ist eigentlich nur Rechnerei :)

Anbei mein Projekt inkl modifizierter Lib falls es jemand ansehen 
möchte.
Angehängte Dateien:
Gast #5259497
Lesenswert?

Johnny S. schrieb:
> In dieser Library gibt es etwa 10 Zeilen welche arduino-spezifisch sind,
> der Rest ist eigentlich nur Rechnerei :)

Aha!

//#if ARDUINO >= 100
//#include <Arduino.h>
//#else
//#include <WProgram.h>
//#endif

Du meinst also wenn man Includes einfach weglässt dann wird's
schon irgendwie funktionieren?

Nebel Stocher schrieb:
> Grunsätzlich bauen viele Arduino Libs auf das existerende
> Arduino Basis-Gerüst auf, lassen sich also nicht ohne weiteres
> standalone benutzen.
OP #5259504
Lesenswert?

Nebel Stocher schrieb:
> Johnny S. schrieb:
>> In dieser Library gibt es etwa 10 Zeilen welche arduino-spezifisch sind,
>> der Rest ist eigentlich nur Rechnerei :)
>
> Aha!
>
> //#if ARDUINO >= 100
> //#include <Arduino.h>
> //#else
> //#include <WProgram.h>
> //#endif
>
> Du meinst also wenn man Includes einfach weglässt dann wird's
> schon irgendwie funktionieren?
>
> Nebel Stocher schrieb:
>> Grunsätzlich bauen viele Arduino Libs auf das existerende
>> Arduino Basis-Gerüst auf, lassen sich also nicht ohne weiteres
>> standalone benutzen.

Arduino.h wird nur benötigt um die Funktion "Millis()" aufzurufen, 
welche Arduino spezifisch ist. Wie bereits geschrieben habe diese auch 
nachgebildet.
Dar Problem ist doch ganz ein anderes!

Das STM32 Programm sieht die funktion "int second()" nicht!

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