Forum: Mikrocontroller und Digitale Elektronik Compiler Linker und Header Fragen im Atmel Studio 6! (An die C-Profis) :)


von Christian A. (see0jay)


Lesenswert?

Hallo!

Bin gerade dabei mich mit den Sensor Node Komponenten von Libelium zu 
beschäftigen.
Grundsätzlich handelt es sich dabei um eine Weiterentwicklung von der 
Arduino Plattform namens Waspmote... Der Source-Code ist großteils 
abgekupfert und wurde erweitert.


Waspmote:
http://www.idigi.com/blog/wp-content/uploads/2013/01/waspmote.jpg

Waspmote API:
http://www.libelium.com/v11-files/api/waspmote/

Nachdem die IDE ja nahezu unbrauchbar ist, habe ich versucht die API in 
das ATMEL Studio 6 einzubinden. Dazu bin ich diesem Tut gefolgt:
http://www.jayconsystems.com/tutorial/atmerpt2/

Hier wird der Core mit der Standard-IDE gebuilded wodurch man ein *.a 
file enthält. Der Pfad von diesem *.a File wird dann in den Project 
Settings vom ATMEL Studio unter der Sektion Linker angegeben. Zudem 
werden die Header Files in den selben Pfad kopiert und das Verzeichnis 
wird unter C-Compiler und C++ Compiler angegeben.


Zum Benutzen der Lib geht man dann wie folgt vor:
1
#include "WaspClasses.h" //hier sind alle includes beeinhaltet
2
3
void setup();
4
void loop();
5
6
void setup()
7
{
8
//setup code
9
}
10
void loop()
11
{
12
//loop code
13
}
14
int main(void)
15
{
16
  init();
17
18
  setup();
19
  
20
  for (;;)
21
  loop();
22
  
23
  return 0;
24
}


Das Funktioniert problemlos, allerdings beim Einbinden von weiteren CPP 
Klassen kommt es zu Problemen. (Beispielsweise OneWire.cpp und 
OneWire.h)

Hab die zwei Files ins Projekt eingebunden und das H-File inkludiert:
1
#include "WaspClasses.h"
2
#include "OneWire.h"

Hier bekomme ich die Meldung: multiple definition of intCounter, intConf 
und intFlag

Wenn ich das include entferne, dann bekomme ich bei der Anweisung:
1
OneWire ds(DIGITAL2);
die Meldung: "OneWire" does not name a type

Es muss irgendwie ein grundsätzliches Compiler Linker bzw. Include 
Problem sein.

Was ist dieses a-File eigentlich genau und gibt es da eine andere 
Möglichkeit die API einzubinden?
Wann wird ein #include eines Headers eigentlich benötigt? Irgendwie 
kommt mir vor, sobald das h-File im Projekt inkludiert ist, braucht man 
es teilweise nicht mehr inkludieren.

Bitte um eure Hilfe!

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.