C++ undefined reference
-
class DCF77 { private: //Private variables bool _initialized; static int dCF77Pin; static int dCFinterrupt; static byte pulseStart; static volatile bool TestToggle; // DCF77 and internal timestamps static time_t previousUpdatedTime; static time_t latestupdatedTime; static time_t processingTimestamp; static time_t previousProcessingTimestamp; static unsigned char CEST; // DCF time format structure struct DCF77Buffer { //unsigned long long prefix :21; unsigned long long prefix :17; unsigned long long CEST :1; // CEST unsigned long long CET :1; // CET unsigned long long unused :2; // unused bits unsigned long long Min :7; // minutes unsigned long long P1 :1; // parity minutes unsigned long long Hour :6; // hours unsigned long long P2 :1; // parity hours unsigned long long Day :6; // day unsigned long long Weekday :3; // day of week unsigned long long Month :5; // month unsigned long long Year :8; // year (5 -> 2005) unsigned long long P3 :1; // parity }; // DCF Parity format structure struct ParityFlags{ unsigned char parityFlag :1; unsigned char parityMin :1; unsigned char parityHour :1; unsigned char parityDate :1; } static flags; // Parameters shared between interupt loop and main loop static volatile bool FilledBufferAvailable; static volatile unsigned long long filledBuffer; static volatile time_t filledTimestamp; // DCF Buffers and indicators static int bufferPosition; static unsigned long long runningBuffer; static unsigned long long processingBuffer; // Pulse flanks static int leadingEdge; static int trailingEdge; static int PreviousLeadingEdge; static bool Up; static bool Test; //Private functions void static initialize(void); void static bufferinit(void); void static finalizeBuffer(void); static bool receivedTimeUpdate(void); void static storePreviousTime(void); void static calculateBufferParities(void); bool static processBuffer(void); void static appendSignal(unsigned char signal); public: // Public Functions //static int Test; DCF77(int DCF77Pin, int DCFinterrupt, bool OnRisingFlank=true); static time_t getTime(void); static time_t getUTCTime(void); static void Start(void); static void Stop(void); static void int0handler(); };void DCF77::initialize(void) { leadingEdge = 0; trailingEdge = 0; PreviousLeadingEdge = 0; Up = false; Test = false; runningBuffer = 0; FilledBufferAvailable = false; bufferPosition = 0; flags.parityDate = 0; flags.parityFlag = 0; flags.parityHour = 0; flags.parityMin = 0; CEST = 0; }Hallo ich habe da eine C++ Lib welche ich um die Variable Test erweitern möchte.
Eigentlich keine große Sache !!! Nur dummerweise bekomme ich vom CompilerC:\Users\ats37\AppData\Local\Temp\build931a4349f13bf1ae47b203afdc2fcf92.tmp\libraries\DCF77\DCF77.cpp.o: In function `DCF77::initialize()':
D:\__Dokus\Documents\Arduino\libraries\DCF77/DCF77.cpp:67: undefined reference to `DCF77::Test'
collect2.exe: error: ld returned 1 exit status
zu hören. Eigentlich ist Test genauso wie Up deklariert!
-
ats3788 schrieb:
Eigentlich ist Test genauso wie Up deklariert!
Es muss aber auch irgendwo definiert werden.
-
Danke für die Antwort
Was meint Du mit definiert werden, wo ist Up definiert ?
-
Hast du mal in den Dateien nach Up gesucht?
-
ats3788 schrieb:
Danke für die Antwort
Was meint Du mit definiert werden, wo ist Up definiert ?Sehr wahrscheinlich nicht in einer Header-Datei, sondern in einer cpp - Datei.
-
Mal ne ganz generelle Frage: warum gibt es in der Klasse so viele statische Variablen? Ich kann mir nicht vorstellen, dass dies ein sinnvolles Klassendesign ist.
-
ersl mal danke für die Antworten
Ich habe das hier gepostet weil ihr in der rEGEL RICHTIG FÄHIG SEIT
das ist für ardunio's
http://thijs.elenbaas.net/downloads/?did=1
warum DAS SO DEKLARIERT IST keine Ahnung ich komme aus der Pascal Welt
Ich wollte nur wissen ob mein bool Test Sinn macht oder nicht Ich wollte mich von C nach C++ bewegen und habe das mit C++ Seattle
nachgebildet und keinen Fehler erhalten aber mit dem Arduino Compiler habe ich das Problem und ich weiß nicht was ich falsch mache. Wenn das so konform
ist auch gut dann muß ich ein Case im Arduino Forum aufmachen.
C C++ ist eben nun mal State of the Art für µMCU's
-
ats3788 schrieb:
ich weiß nicht was ich falsch mache.
Statische Klassenvariablen müssen außerhalb der Klassendeklaration definiert werden. Für Up zum Beispiel muss es in irgendeiner Deiner Quelldateien auch eine Definition geben. Durchsuch Deine Quelldateien mal nach
DCF77::Up