Bonjour à toutes et à tous,
En transposant des méthodes et variables dans un bibliotèque, j'ai les messages suivants :
libraries\ChP_UTM-LatLon\UTM-LatLon.cpp.o:(.bss.utm_Z+0x0): multiple definition of `utm_Z'
sketch\Mon_GPS.ino.cpp.o:(.bss.utm_Z+0x0): first defined here
c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
libraries\ChP_UTM-LatLon\UTM-LatLon.cpp.o:(.bss.utm_E+0x0): multiple definition of `utm_E'
sketch\Mon_GPS.ino.cpp.o:C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:121: first defined here
libraries\ChP_UTM-LatLon\UTM-LatLon.cpp.o:(.bss.utm_N+0x0): multiple definition of `utm_N'
sketch\Mon_GPS.ino.cpp.o:C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:121: first defined here
libraries\ChP_UTM-LatLon\UTM-LatLon.cpp.o:(.bss.lon+0x0): multiple definition of `lon'
sketch\Mon_GPS.ino.cpp.o:C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:121: first defined here
libraries\ChP_UTM-LatLon\UTM-LatLon.cpp.o:(.bss.lat+0x0): multiple definition of `lat'
sketch\Mon_GPS.ino.cpp.o:C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:121: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Erreur lors de la compilation.
Voici le sketch :
#include <UTM-LatLon.h>
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(utm_E);
Serial.println(utm_N);
Serial.println(utm_Z);
Serial.println(lat);
Serial.println(lon);
}
void loop() {
// put your main code here, to run repeatedly:
}
et voici la bibliothèque :
Le fichier UTM-LatLon.h :
#ifndef UTM-LatLon_h
#define UTM-LatLon_h
#include <Arduino.h>
double lat; // latitude en degrés décimaux
double lon; // longitude en degrés décimaux
double utm_N; // Northing en mètres
double utm_E; // Easting en mètres
String utm_Z; // zone
#endif
Le fichier UTM-LatLon.cpp :
#include <Arduino.h>
#include <UTM-LatLon.h>
float k0 = 0.9996f;
float equR = 6378137; // Rayon de l'ellipsoïde valeur WGS84
float exc2 = 0.00669438; // Excentricité de l'ellipsoïde valeur WGS84
J'ai supprimé toutes les méthodes de cette librairie où des variables internes avaient le même nom que les variables incriminées, mais le problème reste le même.
Mes variables ne sont déclarées qu'une seule fois dans UTM-LatLon.h. Alors d'où vient cette erreur de multiple définitions ?
Merci de votre aide.
Pierre